[GHC] #5821: SPECIALISE fails with a cryptic warning
GHC
cvs-ghc at haskell.org
Sat Jan 28 00:26:36 CET 2012
#5821: SPECIALISE fails with a cryptic warning
-----------------------------------------------+----------------------------
Reporter: rl | Owner:
Type: bug | Status: new
Priority: normal | Component: Compiler
Version: 7.5 | Keywords:
Os: Unknown/Multiple | Architecture: Unknown/Multiple
Failure: Incorrect warning at compile-time | Testcase:
Blockedby: | Blocking:
Related: |
-----------------------------------------------+----------------------------
Example:
{{{
type family T a
type instance T Int = Bool
foo :: Num a => a -> T a
foo = undefined
{-# SPECIALISE foo :: Int -> Bool #-}
}}}
GHC produces this warning:
{{{
RULE left-hand side too complicated to desugar
case cobox of _ { GHC.Types.Eq# cobox ->
(foo @ Int $dNum)
`cast` (<Int> -> cobox :: (Int -> T Int) ~# (Int -> Bool))
}
}}}
Given that rewrite rules don't reliably work in the presence of type
families, I somewhat suspect that GHC won't be able to generate a sensible
specialisation here but it should produce a better diagnostic.
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/5821>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the Glasgow-haskell-bugs
mailing list