• Ryan Scott's avatar
    Reify oversaturated data family instances correctly (#17296) · 9ecf4bb1
    Ryan Scott authored
    `TcSplice` was not properly handling oversaturated data family
    instances, such as the example in #17296, as it dropped arguments due
    to carelessly zipping data family instance arguments with
    `tyConTyVars`. For data families, the number of `tyConTyVars` can
    sometimes be less than the number of arguments it can accept in a
    data family instance due to the fact that data family instances can
    be oversaturated.
    To account for this, `TcSplice.mkIsPolyTvs` has now been renamed to
    `tyConArgsPolyKinded` and now factors in `tyConResKind` in addition
    to `tyConTyVars`. I've also added
    `Note [Reified instances and explicit kind signatures]` which
    explains the various subtleties in play here.
    Fixes #17296.
    (cherry picked from commit e3636a68)
TcSplice.hs 86.4 KB