Skip to content

Reify oversaturated data family instances correctly (#17296)

Ryan Scott requested to merge wip/T17296 into master

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).

Merge request reports