ScopedTypeVariables binds a non-existent variable
GHC accepts this definition:
f :: (forall a. a -> a) -> ()
f (x :: b -> b) = x (undefined :: b) `seq` ()
If a scoped type variable is bound always to a variable, then what variable is b
bound to? In the desugared Core, it looks like b
is bound to Any
. Note that I couldn't find any valid argument for x
here other than undefined
.
I think this definition should be rejected.
In terms of implementation, the zonkTcTypeToType
function should never encounter a unfilled-in SigTv
. If it does, error. I don't like putting the error there, but I'm not sure I know another place to do it.
Trac metadata
Trac field | Value |
---|---|
Version | 8.5 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |