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 |