#5359: GHC 7.2.1-rc1 panics on `cgLookupPanic`
-------------------------------+--------------------------------------------
Reporter: hvr | Owner: simonpj
Type: bug | Status: new
Priority: highest | Milestone: 7.2.1
Component: Compiler | Version: 7.1
Keywords: | Testcase:
Blockedby: | Difficulty:
Os: Linux | Blocking:
Architecture: x86_64 (amd64) | Failure: Compile-time crash
-------------------------------+--------------------------------------------
Comment(by dreixel):
I have a similar problem, but also involving SPECIALISE pragmas. At first
I thought this could be somehow related to #4903, but maybe it isn't...
Here is my file:
{{{
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE OverlappingInstances #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE TypeOperators #-}
module Main where
-----------------------------------------------------------------------------
-- Base
-----------------------------------------------------------------------------
infixr 5 :+:
infixr 6 :*:
data U = U
data a :+: b = L a | R b
data a :*: b = a :*: b
newtype Rec a = Rec a
class Representable a where
type Rep a
to :: Rep a -> a
from :: a -> Rep a
data Tree = Leaf | Bin Int Tree Tree
instance Representable Tree where
type Rep Tree = U
:+: (Rec Int :*: Rec Tree :*: Rec Tree)
from (Bin x l r) = R ((Rec x :*: Rec l :*: Rec r))
from Leaf = L (U)
to (R ((Rec x :*: (Rec l) :*: (Rec r)))) = Bin x l r
to (L (U)) = Leaf
--------------------------------------------------------------------------------
-- Generic enum
--------------------------------------------------------------------------------
class Enum' a where
enum' :: [a]
instance Enum' U where enum' = undefined
instance (Enum' a) => Enum' (Rec a) where enum' = undefined
instance (Enum' f, Enum' g) => Enum' (f :+: g) where enum' = undefined
instance (Enum' f, Enum' g) => Enum' (f :*: g) where enum' = undefined
-- This INLINE pragma is essential for the bug
{-# INLINE genum #-}
genum :: (Representable a, Enum' (Rep a)) => [a]
-- The definition of genum is essential for the bug
genum = map to enum'
instance Enum' Tree where enum' = genum
instance Enum' Int where enum' = []
-- This SPECIALISE pragma is essential for the bug
{-# SPECIALISE genum :: [Tree] #-}
main = undefined
}}}
The error:
{{{
ghc.exe: panic! (the 'impossible' happened)
(GHC version 7.2.0.20110728 for i386-unknown-mingw32):
cgLookupPanic (probably invalid Core; try -dcore-lint)
lvl_sk5{v} [lid]
static binds for:
local binds for:
main:Main.to{v rk} [gid[ClassOp]]
main:Main.enum'{v rcS} [gid[ClassOp]]
main:Main.from{v rcT} [gid[ClassOp]]
}}}
And the -dcore-lint output:
{{{
[1 of 1] Compiling Main ( Main.hs, Main.o )
*** Core Lint errors : in result of Simplifier ***
<no location info>:
In the expression: GHC.Base.build @ Main.Tree lvl_siR
lvl_siR is out of scope
*** Offending Program ***
Main.main :: forall a_aeU. a_aeU
[LclIdX,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=False,
ConLike=False, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=True)}]
Main.main = GHC.Err.undefined
lvl_siP
:: Main.U
Main.:+: (Main.Rec GHC.Types.Int
Main.:*: (Main.Rec Main.Tree Main.:*: Main.Rec Main.Tree))
[LclId,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [] 10 110}]
lvl_siP =
Main.L
@ Main.U
@ (Main.Rec GHC.Types.Int
Main.:*: (Main.Rec Main.Tree Main.:*: Main.Rec Main.Tree))
Main.U
$cfrom_afD :: Main.Tree -> Main.Rep Main.Tree
[LclId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [30] 50 110}]
$cfrom_afD =
\ (ds_dhr :: Main.Tree) ->
case ds_dhr of _ {
Main.Leaf ->
lvl_siP
`cast` (Sym (Main.TFCo:R:RepTree)
:: Main.R:RepTree ~ Main.Rep Main.Tree);
Main.Bin x_abV l_abW r_abX ->
(Main.R
@ Main.U
@ (Main.Rec GHC.Types.Int
Main.:*: (Main.Rec Main.Tree Main.:*: Main.Rec Main.Tree))
(Main.:*:
@ (Main.Rec GHC.Types.Int)
@ (Main.Rec Main.Tree Main.:*: Main.Rec Main.Tree)
(x_abV
`cast` (Sym (Main.NTCo:Rec <GHC.Types.Int>)
:: GHC.Types.Int ~ Main.Rec GHC.Types.Int))
(Main.:*:
@ (Main.Rec Main.Tree)
@ (Main.Rec Main.Tree)
(l_abW
`cast` (Sym (Main.NTCo:Rec <Main.Tree>)
:: Main.Tree ~ Main.Rec Main.Tree))
(r_abX
`cast` (Sym (Main.NTCo:Rec <Main.Tree>)
:: Main.Tree ~ Main.Rec Main.Tree)))))
`cast` (Sym (Main.TFCo:R:RepTree)
:: Main.R:RepTree ~ Main.Rep Main.Tree)
}
$cto_afz :: Main.Rep Main.Tree -> Main.Tree
[LclId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [0] 60 140}]
$cto_afz =
\ (ds_dhe :: Main.Rep Main.Tree) ->
case ds_dhe
`cast` (Main.TFCo:R:RepTree :: Main.Rep Main.Tree ~
Main.R:RepTree)
of _ {
Main.L ds_dhl -> case ds_dhl of _ { Main.U -> Main.Leaf };
Main.R ds_dhg ->
case ds_dhg of _ { Main.:*: ds_dhh ds_dhi ->
case ds_dhi of _ { Main.:*: ds_dhj ds_dhk ->
Main.Bin
(ds_dhh
`cast` (Main.NTCo:Rec <GHC.Types.Int>
:: Main.Rec GHC.Types.Int ~ GHC.Types.Int))
(ds_dhj
`cast` (Main.NTCo:Rec <Main.Tree>
:: Main.Rec Main.Tree ~ Main.Tree))
(ds_dhk
`cast` (Main.NTCo:Rec <Main.Tree>
:: Main.Rec Main.Tree ~ Main.Tree))
}
}
}
Main.$fRepresentableTree [InlPrag=[ALWAYS] CONLIKE]
:: Main.Representable Main.Tree
[LclIdX[DFunId],
Unf=DFun(arity=0) Main.D:Representable [$cto_afz, $cfrom_afD]]
Main.$fRepresentableTree =
Main.D:Representable @ Main.Tree $cto_afz $cfrom_afD
Main.$fEnum'U [InlPrag=INLINE (sat-args=0)] :: Main.Enum' Main.U
[LclIdX[DFunId(nt)],
Unf=Unf{Src=InlineStable, TopLvl=True, Arity=0, Value=False,
ConLike=False, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=False,boring_ok=True)
Tmpl= (GHC.Err.undefined @ [Main.U])
`cast` (Sym (Main.NTCo:T:Enum') <Main.U>
:: [Main.U] ~ Main.T:Enum' Main.U)}]
Main.$fEnum'U =
(GHC.Err.undefined @ [Main.U])
`cast` (Sym (Main.NTCo:T:Enum') <Main.U>
:: [Main.U] ~ Main.T:Enum' Main.U)
$cenum'_aft :: forall a_abU. Main.Enum' a_abU => [Main.Rec a_abU]
[LclId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=True)}]
$cenum'_aft = \ (@ a_abU) _ -> GHC.Err.undefined @ [Main.Rec a_abU]
Main.$fEnum'Int [InlPrag=INLINE (sat-args=0)]
:: Main.Enum' GHC.Types.Int
[LclIdX[DFunId(nt)],
Unf=Unf{Src=InlineStable, TopLvl=True, Arity=0, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=False,boring_ok=True)
Tmpl= (GHC.Types.[] @ GHC.Types.Int)
`cast` (Sym (Main.NTCo:T:Enum') <GHC.Types.Int>
:: [GHC.Types.Int] ~ Main.T:Enum' GHC.Types.Int)}]
Main.$fEnum'Int =
(GHC.Types.[] @ GHC.Types.Int)
`cast` (Sym (Main.NTCo:T:Enum') <GHC.Types.Int>
:: [GHC.Types.Int] ~ Main.T:Enum' GHC.Types.Int)
Main.$fEnum'Rec [InlPrag=INLINE (sat-args=0)]
:: forall a_abU. Main.Enum' a_abU => Main.Enum' (Main.Rec a_abU)
[LclIdX[DFunId(nt)],
Arity=1,
Unf=Unf{Src=InlineStable, TopLvl=True, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=False,boring_ok=True)
Tmpl= $cenum'_aft
`cast` (forall a_abU.
<Main.Enum' a_abU> -> Sym (Main.NTCo:T:Enum')
<Main.Rec a_abU>
:: (forall a_abU. Main.Enum' a_abU => [Main.Rec
a_abU])
~
(forall a_abU.
Main.Enum' a_abU =>
Main.T:Enum' (Main.Rec a_abU)))}]
Main.$fEnum'Rec =
$cenum'_aft
`cast` (forall a_abU.
<Main.Enum' a_abU> -> Sym (Main.NTCo:T:Enum') <Main.Rec a_abU>
:: (forall a_abU. Main.Enum' a_abU => [Main.Rec a_abU])
~
(forall a_abU. Main.Enum' a_abU => Main.T:Enum' (Main.Rec
a_abU)))
$dEnum'_ah0 :: Main.Enum' (Main.Rec GHC.Types.Int)
[LclId,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=False,
ConLike=False, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=True)}]
$dEnum'_ah0 =
(GHC.Err.undefined @ [Main.Rec GHC.Types.Int])
`cast` (Nth: 1
((forall a_abU.
<Main.Enum' a_abU>
-> Sym (Main.NTCo:T:Enum') <Main.Rec a_abU>)@GHC.Types.Int)
:: [Main.Rec GHC.Types.Int]
~
Main.T:Enum' (Main.Rec GHC.Types.Int))
$cenum'_afp
:: forall f_abS g_abT.
(Main.Enum' f_abS, Main.Enum' g_abT) =>
[f_abS Main.:+: g_abT]
[LclId,
Arity=2,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=2, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=True)}]
$cenum'_afp =
\ (@ f_abS) (@ g_abT) _ _ ->
GHC.Err.undefined @ [f_abS Main.:+: g_abT]
Main.$fEnum':+: [InlPrag=INLINE (sat-args=0)]
:: forall f_abS g_abT.
(Main.Enum' f_abS, Main.Enum' g_abT) =>
Main.Enum' (f_abS Main.:+: g_abT)
[LclIdX[DFunId(nt)],
Arity=2,
Unf=Unf{Src=InlineStable, TopLvl=True, Arity=2, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=False,boring_ok=True)
Tmpl= $cenum'_afp
`cast` (forall f_abS g_abT.
<Main.Enum' f_abS>
-> <Main.Enum' g_abT>
-> Sym (Main.NTCo:T:Enum') <f_abS Main.:+: g_abT>
:: (forall f_abS g_abT.
(Main.Enum' f_abS, Main.Enum' g_abT) =>
[f_abS Main.:+: g_abT])
~
(forall f_abS g_abT.
(Main.Enum' f_abS, Main.Enum' g_abT) =>
Main.T:Enum' (f_abS Main.:+: g_abT)))}]
Main.$fEnum':+: =
$cenum'_afp
`cast` (forall f_abS g_abT.
<Main.Enum' f_abS>
-> <Main.Enum' g_abT>
-> Sym (Main.NTCo:T:Enum') <f_abS Main.:+: g_abT>
:: (forall f_abS g_abT.
(Main.Enum' f_abS, Main.Enum' g_abT) =>
[f_abS Main.:+: g_abT])
~
(forall f_abS g_abT.
(Main.Enum' f_abS, Main.Enum' g_abT) =>
Main.T:Enum' (f_abS Main.:+: g_abT)))
$cenum'_afk
:: forall f_abQ g_abR.
(Main.Enum' f_abQ, Main.Enum' g_abR) =>
[f_abQ Main.:*: g_abR]
[LclId,
Arity=2,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=2, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=True)}]
$cenum'_afk =
\ (@ f_abQ) (@ g_abR) _ _ ->
GHC.Err.undefined @ [f_abQ Main.:*: g_abR]
Main.$fEnum':*: [InlPrag=INLINE (sat-args=0)]
:: forall f_abQ g_abR.
(Main.Enum' f_abQ, Main.Enum' g_abR) =>
Main.Enum' (f_abQ Main.:*: g_abR)
[LclIdX[DFunId(nt)],
Arity=2,
Unf=Unf{Src=InlineStable, TopLvl=True, Arity=2, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=False,boring_ok=True)
Tmpl= $cenum'_afk
`cast` (forall f_abQ g_abR.
<Main.Enum' f_abQ>
-> <Main.Enum' g_abR>
-> Sym (Main.NTCo:T:Enum') <f_abQ Main.:*: g_abR>
:: (forall f_abQ g_abR.
(Main.Enum' f_abQ, Main.Enum' g_abR) =>
[f_abQ Main.:*: g_abR])
~
(forall f_abQ g_abR.
(Main.Enum' f_abQ, Main.Enum' g_abR) =>
Main.T:Enum' (f_abQ Main.:*: g_abR)))}]
Main.$fEnum':*: =
$cenum'_afk
`cast` (forall f_abQ g_abR.
<Main.Enum' f_abQ>
-> <Main.Enum' g_abR>
-> Sym (Main.NTCo:T:Enum') <f_abQ Main.:*: g_abR>
:: (forall f_abQ g_abR.
(Main.Enum' f_abQ, Main.Enum' g_abR) =>
[f_abQ Main.:*: g_abR])
~
(forall f_abQ g_abR.
(Main.Enum' f_abQ, Main.Enum' g_abR) =>
Main.T:Enum' (f_abQ Main.:*: g_abR)))
Rec {
genum_dhd [InlPrag=INLINE (sat-args=0)] :: [Main.Tree]
[LclId,
Unf=Unf{Src=InlineStable, TopLvl=True, Arity=0, Value=False,
ConLike=False, Cheap=False, Expandable=False,
Guidance=ALWAYS_IF(unsat_ok=False,boring_ok=False)
Tmpl= GHC.Base.build
@ Main.Tree
(\ (@ b1_ahA)
(c_ahB [Occ=Once, Lbv=OneShot] :: Main.Tree -> b1_ahA
-> b1_ahA)
(n_ahC [Occ=Once, Lbv=OneShot] :: b1_ahA) ->
GHC.Base.foldr
@ (Main.Rep Main.Tree)
@ b1_ahA
(GHC.Base.mapFB
@ Main.Tree @ b1_ahA @ (Main.Rep Main.Tree) c_ahB
$cto_afz)
n_ahC
($dEnum'_agX
`cast` (Main.T:Enum'
(Sym (Main.TFCo:R:RepTree)) ;
Main.NTCo:T:Enum' <Main.Rep
Main.Tree>
:: Main.T:Enum' Main.R:RepTree ~ [Main.Rep
Main.Tree])))}]
genum_dhd = GHC.Base.build @ Main.Tree lvl_siR
$cenum'_afd :: [Main.Tree]
[LclId,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=False,
ConLike=False, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=True)}]
$cenum'_afd = genum_dhd
Main.$fEnum'Tree [InlPrag=INLINE (sat-args=0)]
:: Main.Enum' Main.Tree
[LclIdX[DFunId(nt)],
Unf=Unf{Src=InlineStable, TopLvl=True, Arity=0, Value=False,
ConLike=False, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=False,boring_ok=True)
Tmpl= $cenum'_afd
`cast` (Sym (Main.NTCo:T:Enum') <Main.Tree>
:: [Main.Tree] ~ Main.T:Enum' Main.Tree)}]
Main.$fEnum'Tree =
genum_dhd
`cast` (Sym (Main.NTCo:T:Enum') <Main.Tree>
:: [Main.Tree] ~ Main.T:Enum' Main.Tree)
$dEnum'_ah3 :: Main.Enum' (Main.Rec Main.Tree)
[LclId,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=False,
ConLike=False, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=True)}]
$dEnum'_ah3 =
(GHC.Err.undefined @ [Main.Rec Main.Tree])
`cast` (Nth: 1
((forall a_abU.
<Main.Enum' a_abU>
-> Sym (Main.NTCo:T:Enum') <Main.Rec a_abU>)@Main.Tree)
:: [Main.Rec Main.Tree] ~ Main.T:Enum' (Main.Rec Main.Tree))
$dEnum'_ah1
:: Main.Enum' (Main.Rec Main.Tree Main.:*: Main.Rec Main.Tree)
[LclId,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=False,
ConLike=False, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=True)}]
$dEnum'_ah1 =
(GHC.Err.undefined
@ [Main.Rec Main.Tree Main.:*: Main.Rec Main.Tree])
`cast` (Nth: 1
(Nth: 1
(((forall f_abQ g_abR.
<Main.Enum' f_abQ>
-> <Main.Enum' g_abR>
-> Sym (Main.NTCo:T:Enum') <f_abQ Main.:*:
g_abR>)@Main.Rec
Main.Tree)@Main.Rec
Main.Tree))
:: [Main.Rec Main.Tree Main.:*: Main.Rec Main.Tree]
~
Main.T:Enum' (Main.Rec Main.Tree Main.:*: Main.Rec
Main.Tree))
$dEnum'_agZ
:: Main.Enum'
(Main.Rec GHC.Types.Int
Main.:*: (Main.Rec Main.Tree Main.:*: Main.Rec Main.Tree))
[LclId,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=False,
ConLike=False, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=True)}]
$dEnum'_agZ =
(GHC.Err.undefined
@ [Main.Rec GHC.Types.Int
Main.:*: (Main.Rec Main.Tree Main.:*: Main.Rec Main.Tree)])
`cast` (Nth: 1
(Nth: 1
(((forall f_abQ g_abR.
<Main.Enum' f_abQ>
-> <Main.Enum' g_abR>
-> Sym (Main.NTCo:T:Enum') <f_abQ Main.:*:
g_abR>)@Main.Rec
GHC.Types.Int)@Main.Rec
Main.Tree
Main.:*: Main.Rec
Main.Tree))
:: [Main.Rec GHC.Types.Int
Main.:*: (Main.Rec Main.Tree Main.:*: Main.Rec Main.Tree)]
~
Main.T:Enum'
(Main.Rec GHC.Types.Int
Main.:*: (Main.Rec Main.Tree Main.:*: Main.Rec
Main.Tree)))
$dEnum'_agX [Occ=LoopBreaker]
:: Main.Enum'
(Main.U
Main.:+: (Main.Rec GHC.Types.Int
Main.:*: (Main.Rec Main.Tree Main.:*: Main.Rec
Main.Tree)))
[LclId,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=False,
ConLike=False, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=True)}]
$dEnum'_agX =
(GHC.Err.undefined
@ [Main.U
Main.:+: (Main.Rec GHC.Types.Int
Main.:*: (Main.Rec Main.Tree Main.:*: Main.Rec
Main.Tree))])
`cast` (Nth: 1
(Nth: 1
(((forall f_abS g_abT.
<Main.Enum' f_abS>
-> <Main.Enum' g_abT>
-> Sym (Main.NTCo:T:Enum') <f_abS Main.:+:
g_abT>)@Main.U)@Main.Rec
GHC.Types.Int
Main.:*: (Main.Rec
Main.Tree
Main.:*: Main.Rec
Main.Tree)))
:: [Main.U
Main.:+: (Main.Rec GHC.Types.Int
Main.:*: (Main.Rec Main.Tree Main.:*: Main.Rec
Main.Tree))]
~
Main.T:Enum'
(Main.U
Main.:+: (Main.Rec GHC.Types.Int
Main.:*: (Main.Rec Main.Tree Main.:*: Main.Rec
Main.Tree))))
end Rec }
Main.genum [InlPrag=INLINE (sat-args=0)]
:: forall a_abP.
(Main.Representable a_abP, Main.Enum' (Main.Rep a_abP)) =>
[a_abP]
[LclIdX,
Arity=2,
Unf=Unf{Src=InlineStable, TopLvl=True, Arity=2, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=False,boring_ok=False)
Tmpl= \ (@ a_aeV)
($dRepresentable_aeW [Occ=Once] :: Main.Representable
a_aeV)
($dEnum'_aeX [Occ=Once] :: Main.Enum' (Main.Rep a_aeV))
->
GHC.Base.build
@ a_aeV
(\ (@ b1_ahA)
(c_ahB [Occ=Once, Lbv=OneShot] :: a_aeV -> b1_ahA ->
b1_ahA)
(n_ahC [Occ=Once, Lbv=OneShot] :: b1_ahA) ->
GHC.Base.foldr
@ (Main.Rep a_aeV)
@ b1_ahA
(GHC.Base.mapFB
@ a_aeV
@ b1_ahA
@ (Main.Rep a_aeV)
c_ahB
(Main.to @ a_aeV $dRepresentable_aeW))
n_ahC
($dEnum'_aeX
`cast` (Main.NTCo:T:Enum' <Main.Rep a_aeV>
:: Main.T:Enum' (Main.Rep a_aeV) ~
[Main.Rep a_aeV])))},
RULES: "SPEC Main.genum" [ALWAYS]
forall ($dRepresentable_af6 :: Main.Representable Main.Tree)
($dEnum'_XfB :: Main.Enum' (Main.Rep Main.Tree)).
Main.genum @ Main.Tree $dRepresentable_af6 $dEnum'_XfB
= genum_dhd]
Main.genum =
\ (@ a_aeV)
($dRepresentable_aeW :: Main.Representable a_aeV)
($dEnum'_aeX :: Main.Enum' (Main.Rep a_aeV)) ->
GHC.Base.build
@ a_aeV
(\ (@ b1_ahA)
(c_ahB [Lbv=OneShot] :: a_aeV -> b1_ahA -> b1_ahA)
(n_ahC [Lbv=OneShot] :: b1_ahA) ->
GHC.Base.foldr
@ (Main.Rep a_aeV)
@ b1_ahA
(GHC.Base.mapFB
@ a_aeV
@ b1_ahA
@ (Main.Rep a_aeV)
c_ahB
(Main.to @ a_aeV $dRepresentable_aeW))
n_ahC
($dEnum'_aeX
`cast` (Main.NTCo:T:Enum' <Main.Rep a_aeV>
:: Main.T:Enum' (Main.Rep a_aeV) ~ [Main.Rep a_aeV])))
a_siJ
:: GHC.Prim.State# GHC.Prim.RealWorld
-> (# GHC.Prim.State# GHC.Prim.RealWorld, GHC.Prim.Any #)
[LclId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [0] 30 0}]
a_siJ =
\ (eta_B1 :: GHC.Prim.State# GHC.Prim.RealWorld) ->
GHC.TopHandler.runMainIO1
@ GHC.Prim.Any
(GHC.Err.undefined @ (GHC.Types.IO GHC.Prim.Any))
eta_B1
:Main.main :: GHC.Types.IO GHC.Prim.Any
[LclIdX,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=True)}]
:Main.main =
a_siJ
`cast` (Sym (GHC.Types.NTCo:IO <GHC.Prim.Any>)
:: (GHC.Prim.State# GHC.Prim.RealWorld
-> (# GHC.Prim.State# GHC.Prim.RealWorld, GHC.Prim.Any #))
~
GHC.Types.IO GHC.Prim.Any)
*** End of Offense ***
}}}
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/5359#comment:2>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs