Non-abstract types also have skolem nature
In #12680, we determined that abstract types from signatures need to be treated like skolem variables.
But it turns out other types from signatures also need to be treated like skolem variables too:
{-# LANGUAGE GADTs #-}
unit p where
signature M1 where
data A = MkA
signature M2 where
data A = MkA
module A where
import qualified M1
import qualified M2
f :: M1.A ~ M2.A => a -> b
f x = x
This is bad because these As could be the same thing in the end. I think the real, final fix, is to not test for "skolem abstractness" (as we do now), but just look and see if the Name for the TyCon is a name hole or not. Then we can eliminate skolem abstract completely.
Trac metadata
Trac field | Value |
---|---|
Version | 8.1 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler (Type checker) |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |