No levity-polymorphic arguments
As discussed in our draft paper on levity polymorphism, you cannot have a levity-polymorphic argument. Here is an example:
{-# LANGUAGE RebindableSyntax, TypeInType, ExplicitForAll #-}
module Bug where
import qualified Prelude as P
import GHC.Exts
class Num (a :: TYPE r) where
(+) :: a -> a -> a
fromInteger :: P.Integer -> a
foo :: forall (a :: TYPE r). Num a => a
foo = 3 + 4
HEAD panics in kindPrimRep, but the code should be rejected.
Trac metadata
| Trac field | Value |
|---|---|
| Version | 8.1 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |