Compiler panic in the presence of cyclic imports
A.hs
module A where
import {-# SOURCE #-} B
data X = X Y
B.hs-boot
module B where
data Y
B.hs
module B where
import A
data Y = Y Int Int
thing :: X -> a
thing (X (Y a b)) = thing (X (Y a b))
C.hs
module C where
import A
import B
panic :: Int -> a
panic x = thing (X (Y x x))
Now try to compile module C:
$ ghc-stage2 -O C
[1 of 4] Compiling B[boot] ( B.hs-boot, B.o-boot )
[2 of 4] Compiling A ( A.hs, A.o )
[3 of 4] Compiling B ( B.hs, B.o )
[4 of 4] Compiling C ( C.hs, C.o )
ghc-stage2: panic! (the 'impossible' happened)
(GHC version 7.7.20130826 for x86_64-unknown-linux):
applyTypeToArgs
main:B.$wthing{v rsQ} [gid]
@ a{tv ivX} [tv] ww_iwm{v} [lid] ww_iwn{v} [lid]
a{tv ivX} [tv]
Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug
I encountered this bug when attempting to compile GHC with GHC -O2 --make.
Trac metadata
Trac field | Value |
---|---|
Version | 7.7 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |