raise# should have an open kind in its return type
I noticed this while working on https://phabricator.haskell.org/D861. error
has a wired-in type
error :: forall (a :: OpenKind). String -> a
and an implementation
error :: String -> a
error s = raise# (errorCallException s)
But GHC will actually reject the definition of error
if you check it against the wired-in type as raise#
has a lifted kind.
The only reason we can compile base
is that open kinds cannot be expressed in Haskell source, so when GHC compiles GHC.Err
it thinks error
has a lifted kind, but for every other module it uses the wired-in type with an open kind.
I'm marking this as low priority because I don't see how it could affect anyone outside of GHC developers, since open kinds aren't expressible in the source language.
Trac metadata
Trac field | Value |
---|---|
Version | 7.11 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | low |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |