[GHC] #9036: ghc: panic! (the 'impossible' happened) (Binder's type (SingI Symbol <a String>) /= RHS type (String))

GHC ghc-devs at haskell.org
Thu Apr 24 21:52:38 UTC 2014


#9036: ghc: panic! (the 'impossible' happened) (Binder's type (SingI Symbol <a
String>) /= RHS type (String))
--------------------------------+---------------------------------------
       Reporter:  ntc2          |             Owner:
           Type:  bug           |            Status:  new
       Priority:  normal        |         Milestone:
      Component:  Compiler      |           Version:  7.6.3
       Keywords:  GHC.TypeLits  |  Operating System:  Linux
   Architecture:  x86           |   Type of failure:  Compile-time crash
     Difficulty:  Unknown       |         Test Case:
     Blocked By:                |          Blocking:
Related Tickets:                |
--------------------------------+---------------------------------------
 Compilation error message:
 {{{
 ghc: panic! (the 'impossible' happened)
   (GHC version 7.6.3 for i386-unknown-linux):
         cgLookupPanic (probably invalid Core; try -dcore-lint)
     cobox{v a212} [lid]
     static binds for:
     local binds for:
     main:Debug.Trace.LogTree.Test.$p1AllShow{v r1pg} [gid[ClassOp]]
     main:Debug.Trace.LogTree.Test.$p2AllShow{v r1ph} [gid[ClassOp]]
     main:Debug.Trace.LogTree.Test.$p3AllShow{v r1pi} [gid[ClassOp]]
     main:Debug.Trace.LogTree.Test.$p4AllShow{v r1pj} [gid[ClassOp]]
     main:Debug.Trace.LogTree.Test.$p5AllShow{v r1pk} [gid[ClassOp]]
     main:Debug.Trace.LogTree.Test.$p6AllShow{v r1pl} [gid[ClassOp]]

 Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug
 }}}

 Error in -dcore-lint:
 {{{
 [10 of 10] Compiling Debug.Trace.LogTree.Test (
 src/Debug/Trace/LogTree/Test.hs, tmp/Debug/Trace/LogTree/Test.o )
 *** Core Lint errors : in result of Desugar (after optimization) ***
 {-# LINE 122 "src/Debug/Trace/LogTree/Test.hs #-}: Warning:
     [RHS of $dSingI_a20r :: GHC.TypeLits.SingI GHC.TypeLits.Symbol "h"]
     The type of this binder doesn't match the type of its RHS:
 $dSingI_a20r
     Binder's type: GHC.TypeLits.SingI GHC.TypeLits.Symbol "h"
     Rhs type: [GHC.Types.Char]
 }}}

 So, it looks like it's related to !TypeLits. The full -dcore-lint output
 is attached.

 To reproduce:
 1. git clone https://github.com/ntc2/haskell-call-trace.git
 2. cd haskell-call-trace
 3. git checkout break-ghc
 3. <install dependencies; see below>
 4. make

 The dependencies from the .cabal file are:
 {{{
   build-depends: base >=4.6 && <4.7
                , template-haskell >=2.8 && <2.9
                , ghc-prim >=0.3 && <0.4
                , parsec >=3.1 && <3.2
                , tagged >=0.7 && <0.8
                , transformers >=0.3 && <0.4
                , mtl >=2.1 && <2.2
 }}}

 The problematic file is https://github.com/ntc2/haskell-call-trace/blob
 /break-ghc/src/Debug/Trace/LogTree/Test.hs . I was in the middle of a
 program-wide change when I ran into this GHC panic; I was using the type
 errors to guide my fixes. The Test.hs is not type correct, but I don't see
 how the stuff I changed as anything to do with my use of type-level
 strings (!TypeLits). The code in the previous commit compiles.

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9036>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list