Reify oversaturated data family instances correctly (#17296)
TcSplice
was not properly handling oversaturated data family
instances, such as the example in #17296 (closed), 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 (closed).