
#10481: raise# should have an open kind in its return type -------------------------------------+------------------------------------- Reporter: gridaphobe | Owner: Type: bug | Status: new Priority: low | Milestone: Component: Compiler | Version: 7.11 Keywords: | Operating System: Unknown/Multiple Architecture: | Type of failure: None/Unknown Unknown/Multiple | Blocked By: Test Case: | Related Tickets: Blocking: | Differential Revisions: | -------------------------------------+------------------------------------- I noticed this while working on https://phabricator.haskell.org/D861. `error` has a wired-in type {{{#!hs error :: forall (a :: OpenKind). String -> a }}} and an implementation {{{#!hs 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. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10481 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler