Skip to content

ghc: panic! Binder's type (SingI Symbol <a String>) /= RHS type (String)

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
  4. <install dependencies; see below>
  5. 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.

Trac metadata
Trac field Value
Version 7.6.3
Type Bug
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Compiler
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system
Architecture
Edited by Nathan Collins
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information