[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