[GHC] #7729: GHC panics. Invalid core

GHC cvs-ghc at haskell.org
Fri Mar 1 18:03:26 CET 2013


#7729: GHC panics. Invalid core
---------------------------------+------------------------------------------
    Reporter:  Khudyakov         |       Owner:                  
        Type:  bug               |      Status:  new             
    Priority:  normal            |   Milestone:                  
   Component:  Compiler          |     Version:  7.6.2           
    Keywords:                    |          Os:  Unknown/Multiple
Architecture:  Unknown/Multiple  |     Failure:  None/Unknown    
  Difficulty:  Unknown           |    Testcase:                  
   Blockedby:                    |    Blocking:                  
     Related:                    |  
---------------------------------+------------------------------------------
Changes (by simonpj):

  * difficulty:  => Unknown


Comment:

 Interesting.  With HEAD we get
 {{{
 T7729.hs:29:14:
     Could not deduce (BasePrimMonad (Rand m)
                       ~ t0 (BasePrimMonad (Rand m)))
     from the context (PrimMonad (BasePrimMonad (Rand m)),
                       Monad (Rand m),
                       MonadPrim m)
       bound by the instance declaration at T7729.hs:26:10-42
     The type variable ‛t0’ is ambiguous
     Expected type: t0 (BasePrimMonad (Rand m)) a -> Rand m a
       Actual type: BasePrimMonad (Rand m) a -> Rand m a
     Relevant bindings include
       liftPrim :: BasePrimMonad (Rand m) a -> Rand m a
         (bound at T7729.hs:29:3)
     In the first argument of ‛(.)’, namely ‛liftPrim’
     In the expression: liftPrim . lift
     In an equation for ‛liftPrim’: liftPrim = liftPrim . lift
 }}}
 If you change the offending line to
 {{{
   liftPrim x = liftPrim (lift x)
 }}}
 then we get a different erro rmessage
 {{{
 Adding error:
   T7729.hs:28:31:
       Occurs check: cannot construct the infinite type: m0 ~ t0 m0
       Expected type: m0 a
         Actual type: BasePrimMonad (Rand m) a
       In the first argument of ‛lift’, namely ‛x’
       In the first argument of ‛liftPrim’, namely ‛(lift x)’
       In the expression: liftPrim (lift x)
 }}}
 Although these errors look different, they are acutally pretty similar.

 GHC 7.6.2 fails to reject the program, but gives a Lint error if you use
 `-docore-lint`.  I don't propose to try to fix this... too obscure.  I'll
 add a regression test thought.  Thank you for the example.

 Simon

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/7729#comment:1>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler



More information about the ghc-tickets mailing list