($) returning kind # no longer type checks
Given:
{-# LANGUAGE MagicHash #-}
module InnerLoop(go) where
import GHC.Exts
go :: () -> Int#
go () = go $ ()
This type checks fine on GHC 7.2.3, and I have a similar version that works fine with 7.4 and 7.6. However, with GHC 7.8.20140130, I get:
InnerLoop.hs:5:9:
Kind incompatibility when matching types:
s0 :: *
Int# :: #
In the expression: go $ ()
In an equation for `go': go () = go $ ()
This code was reduced from this blog post, and code which triggers a similar bug can be found in Shake.
I know $
has special type checking rules, were they removed or changed?
Trac metadata
Trac field | Value |
---|---|
Version | 7.8.1-rc1 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | ndmitchell@gmail.com |
Operating system | |
Architecture |