GADTs don't seem to unpack properly
Consider this simple code:
type family Foo a b
data Goof a b where
Goof :: !(Foo a b :~: Int) -> Goof a b
(:~:) has just one constructor (Refl) with no arguments, so I'd expect it to unpack to a void representation:
GoofConstr :: Foo a b ~N# Int => Goof a b
WGoof :: Foo a b :~: Int -> Goof a b
WGoof eq = case eq of Refl -> GoofConstr
But it doesn't seem to unpack at all.
Trac metadata
| Trac field | Value |
|---|---|
| Version | 8.2.2 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |