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:
- git clone https://github.com/ntc2/haskell-call-trace.git
- cd haskell-call-trace
- git checkout break-ghc
- <install dependencies; see below>
- 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 |