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
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
To account for this,
TcSplice.mkIsPolyTvs has now been renamed to
tyConArgsPolyKinded and now factors in
tyConResKind in addition
tyConTyVars. I've also added
Note [Reified instances and explicit kind signatures] which
explains the various subtleties in play here.
Fixes #17296 (closed).