Implement KPush in types
A recent commit contributed a Note (ef0ff34d) that explains why we need the dreaded KPush rule to be implemented in splitTyConApp. Without KPush there, it's possible that we can have two types t1 and t2 such that t1 eqType t2 and yet they respond differently to splitTyConApp: t1 = (T |> co1) (a |> co2) and t2 = T a. Both t1 and t2 are well-kinded and can have the same kind. But one is a TyConApp and one is an AppTy. (Actually, looking at this, perhaps the magic will be in mkAppTy, not splitTyConApp.) But I have to look closer.
This ticket serves as a reminder to do so.
Trac metadata
| Trac field | Value |
|---|---|
| Version | |
| Type | Task |
| TypeOfFailure | OtherFailure |
| Priority | high |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |