#4969: regression: core-lint failure in agda
---------------------------------+------------------------------------------
Reporter: igloo | Owner:
Type: bug | Status: new
Priority: high | Milestone: 7.0.2
Component: Compiler | Version: 7.0.1
Keywords: | Testcase:
Blockedby: | Difficulty:
Os: Unknown/Multiple | Blocking:
Architecture: Unknown/Multiple | Failure: None/Unknown
---------------------------------+------------------------------------------
This testcase, boiled down from agda 2.2.8, gives a core lint failure with
HEAD and 7.0 branch, but not 7.0.1:
{{{
{-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies,
FlexibleContexts, FlexibleInstances,
OverlappingInstances, UndecidableInstances #-}
module Q where
import Control.Monad (foldM)
data NameId = NameId
data Named name a = Named
data Arg e = Arg
data Range = Range
data Name = Name
data ALetBinding = ALetBinding
data APattern a = APattern
data CExpr = CExpr
data CPattern = CPattern
data NiceDeclaration = QQ
data TypeError = NotAValidLetBinding NiceDeclaration
data TCState = TCSt { stFreshThings :: FreshThings }
data FreshThings = Fresh
newtype NewName a = NewName a
newtype LetDef = LetDef NiceDeclaration
newtype TCMT m a = TCM ()
localToAbstract :: ToAbstract c a => c -> (a -> TCMT IO b) -> TCMT IO b
localToAbstract = undefined
typeError :: MonadTCM tcm => TypeError -> tcm a
typeError = undefined
lhsArgs :: [Arg (Named String CPattern)]
lhsArgs = undefined
freshNoName :: (MonadState s m, HasFresh NameId s) => Range -> m Name
freshNoName = undefined
class (Monad m) => MonadState s m | m -> s
class (Monad m) => MonadIO m
class ToAbstract concrete abstract | concrete -> abstract where
toAbstract :: concrete -> TCMT IO abstract
class (MonadState TCState tcm) => MonadTCM tcm where
liftTCM :: TCMT IO a -> tcm a
class HasFresh i a where
nextFresh :: a -> (i,a)
instance ToAbstract c a => ToAbstract [c] [a] where
instance ToAbstract c a => ToAbstract (Arg c) (Arg a) where
instance ToAbstract c a => ToAbstract (Named name c) (Named name a) where
instance ToAbstract CPattern (APattern CExpr) where
instance ToAbstract LetDef [ALetBinding] where
toAbstract (LetDef d) = do _ <- letToAbstract
undefined
where letToAbstract = do
localToAbstract lhsArgs $ \args ->
foldM lambda undefined undefined
lambda _ _ = do x <- freshNoName undefined
return undefined
lambda _ _ = typeError $ NotAValidLetBinding d
instance HasFresh NameId FreshThings where
nextFresh = undefined
instance HasFresh i FreshThings => HasFresh i TCState where
nextFresh = undefined
instance Monad m => MonadState TCState (TCMT m) where
instance Monad m => MonadTCM (TCMT m) where
liftTCM = undefined
instance Monad (TCMT m) where
return = undefined
(>>=) = undefined
fail = undefined
instance Monad m => MonadIO (TCMT m) where
}}}
{{{
$ ghc -c q.hs -dcore-lint > out
<no location info>:
Compilation had errors
$ cat out
*** Core Lint errors : in result of Desugar ***
<no location info>:
In the expression: Q.freshNoName
@ Q.TCState @ m_akZ $dMonadState_akN
$dMonadState_akN is out of scope
<no location info>:
In the expression: Q.freshNoName
@ Q.TCState @ m_akZ $dMonadState_akN
Argument value doesn't match argument type:
Fun type:
(Q.MonadState Q.TCState m_akZ, Q.HasFresh Q.NameId Q.TCState) =>
Q.Range -> m_akZ Q.Name
Arg type: Q.MonadState Q.TCState m_r
Arg: $dMonadState_akN
*** Offending Program ***
Q.freshNoName
:: forall s_adu (m_adv :: * -> *).
(Q.MonadState s_adu m_adv, Q.HasFresh Q.NameId s_adu) =>
Q.Range -> m_adv Q.Name
[LclIdX]
Q.freshNoName =
\ (@ s_ajs) (@ m_ajt::* -> *) _ _ ->
GHC.Err.undefined @ (Q.Range -> m_ajt Q.Name)
Q.lhsArgs :: [Q.Arg (Q.Named GHC.Base.String Q.CPattern)]
[LclIdX]
Q.lhsArgs =
GHC.Err.undefined @ [Q.Arg (Q.Named GHC.Base.String Q.CPattern)]
Q.typeError
:: forall (tcm_adw :: * -> *) a_adx.
Q.MonadTCM tcm_adw =>
Q.TypeError -> tcm_adw a_adx
[LclIdX]
Q.typeError =
\ (@ tcm_ajB::* -> *) (@ a_ajC) _ ->
GHC.Err.undefined @ (Q.TypeError -> tcm_ajB a_ajC)
Q.localToAbstract
:: forall c_ady a_adz b_adA.
Q.ToAbstract c_ady a_adz =>
c_ady
-> (a_adz -> Q.TCMT GHC.Types.IO b_adA)
-> Q.TCMT GHC.Types.IO b_adA
[LclIdX]
Q.localToAbstract =
\ (@ c_ajF) (@ a_ajG) (@ b_ajH) _ ->
GHC.Err.undefined
@ (c_ajF
-> (a_ajG -> Q.TCMT GHC.Types.IO b_ajH)
-> Q.TCMT GHC.Types.IO b_ajH)
Q.stFreshThings :: Q.TCState -> Q.FreshThings
[LclIdX[[RecSel]]]
Q.stFreshThings =
\ (ds_dmh :: Q.TCState) ->
case ds_dmh of _ { Q.TCSt ds_dmi -> ds_dmi }
Q.$fMonadIOTCMT [InlPrag=INLINE (sat-args=0)]
:: forall (m_adB :: * -> *).
(GHC.Base.Monad (Q.TCMT m_adB), GHC.Base.Monad m_adB) =>
Q.MonadIO (Q.TCMT m_adB)
[LclIdX[DFunId[1](nt)],
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= \ (@ m_adB::* -> *)
($dMonad_ajP [Occ=Once] :: GHC.Base.Monad (Q.TCMT m_adB))
_ ->
Q.D:MonadIO @ (Q.TCMT m_adB) $dMonad_ajP}]
Q.$fMonadIOTCMT =
\ (@ m_adB::* -> *)
($dMonad_ajP :: GHC.Base.Monad (Q.TCMT m_adB))
_ ->
Q.D:MonadIO @ (Q.TCMT m_adB) $dMonad_ajP
Q.$fMonadStateTCStateTCMT [InlPrag=INLINE (sat-args=0)]
:: forall (m_adE :: * -> *).
(GHC.Base.Monad (Q.TCMT m_adE), GHC.Base.Monad m_adE) =>
Q.MonadState Q.TCState (Q.TCMT m_adE)
[LclIdX[DFunId[1](nt)],
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= \ (@ m_adE::* -> *)
($dMonad_akp [Occ=Once] :: GHC.Base.Monad (Q.TCMT m_adE))
_ ->
Q.D:MonadState @ Q.TCState @ (Q.TCMT m_adE) $dMonad_akp}]
Q.$fMonadStateTCStateTCMT =
\ (@ m_adE::* -> *)
($dMonad_akp :: GHC.Base.Monad (Q.TCMT m_adE))
_ ->
Q.D:MonadState @ Q.TCState @ (Q.TCMT m_adE) $dMonad_akp
$ctoAbstract_als
:: forall c_adQ a_adR.
Q.ToAbstract c_adQ a_adR =>
[c_adQ] -> Q.TCMT GHC.Types.IO [a_adR]
[LclId]
$ctoAbstract_als =
\ (@ c_adQ) (@ a_adR) _ ->
Control.Exception.Base.noMethodBindingError
@ ([c_adQ] -> Q.TCMT GHC.Types.IO [a_adR])
"q.hs:53:10-45|Q.toAbstract"
Q.$fToAbstract[][] [InlPrag=INLINE (sat-args=0)]
:: forall c_adQ a_adR.
Q.ToAbstract c_adQ a_adR =>
Q.ToAbstract [c_adQ] [a_adR]
[LclIdX[DFunId(nt)],
Unf=Unf{Src=InlineStable, TopLvl=True, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=False,boring_ok=False)
Tmpl= \ (@ c_adQ)
(@ a_adR)
($dToAbstract_alr [Occ=Once] :: Q.ToAbstract c_adQ a_adR)
->
Q.D:ToAbstract
@ [c_adQ]
@ [a_adR]
($ctoAbstract_als @ c_adQ @ a_adR $dToAbstract_alr)}]
Q.$fToAbstract[][] =
\ (@ c_adQ)
(@ a_adR)
($dToAbstract_alr :: Q.ToAbstract c_adQ a_adR) ->
Q.D:ToAbstract
@ [c_adQ]
@ [a_adR]
($ctoAbstract_als @ c_adQ @ a_adR $dToAbstract_alr)
$ctoAbstract_alo
:: forall c_adO a_adP.
Q.ToAbstract c_adO a_adP =>
Q.Arg c_adO -> Q.TCMT GHC.Types.IO (Q.Arg a_adP)
[LclId]
$ctoAbstract_alo =
\ (@ c_adO) (@ a_adP) _ ->
Control.Exception.Base.noMethodBindingError
@ (Q.Arg c_adO -> Q.TCMT GHC.Types.IO (Q.Arg a_adP))
"q.hs:54:10-53|Q.toAbstract"
Q.$fToAbstractArgArg [InlPrag=INLINE (sat-args=0)]
:: forall c_adO a_adP.
Q.ToAbstract c_adO a_adP =>
Q.ToAbstract (Q.Arg c_adO) (Q.Arg a_adP)
[LclIdX[DFunId(nt)],
Unf=Unf{Src=InlineStable, TopLvl=True, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=False,boring_ok=False)
Tmpl= \ (@ c_adO)
(@ a_adP)
($dToAbstract_aln [Occ=Once] :: Q.ToAbstract c_adO a_adP)
->
Q.D:ToAbstract
@ (Q.Arg c_adO)
@ (Q.Arg a_adP)
($ctoAbstract_alo @ c_adO @ a_adP $dToAbstract_aln)}]
Q.$fToAbstractArgArg =
\ (@ c_adO)
(@ a_adP)
($dToAbstract_aln :: Q.ToAbstract c_adO a_adP) ->
Q.D:ToAbstract
@ (Q.Arg c_adO)
@ (Q.Arg a_adP)
($ctoAbstract_alo @ c_adO @ a_adP $dToAbstract_aln)
$ctoAbstract_alk
:: forall c_adL a_adM name_adN.
Q.ToAbstract c_adL a_adM =>
Q.Named name_adN c_adL
-> Q.TCMT GHC.Types.IO (Q.Named name_adN a_adM)
[LclId]
$ctoAbstract_alk =
\ (@ c_adL) (@ a_adM) (@ name_adN) _ ->
Control.Exception.Base.noMethodBindingError
@ (Q.Named name_adN c_adL
-> Q.TCMT GHC.Types.IO (Q.Named name_adN a_adM))
"q.hs:55:10-67|Q.toAbstract"
Q.$fToAbstractNamedNamed [InlPrag=INLINE (sat-args=0)]
:: forall c_adL a_adM name_adN.
Q.ToAbstract c_adL a_adM =>
Q.ToAbstract (Q.Named name_adN c_adL) (Q.Named name_adN a_adM)
[LclIdX[DFunId(nt)],
Unf=Unf{Src=InlineStable, TopLvl=True, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=False,boring_ok=False)
Tmpl= \ (@ c_adL)
(@ a_adM)
(@ name_adN)
($dToAbstract_alj [Occ=Once] :: Q.ToAbstract c_adL a_adM)
->
Q.D:ToAbstract
@ (Q.Named name_adN c_adL)
@ (Q.Named name_adN a_adM)
($ctoAbstract_alk @ c_adL @ a_adM @ name_adN
$dToAbstract_alj)}]
Q.$fToAbstractNamedNamed =
\ (@ c_adL)
(@ a_adM)
(@ name_adN)
($dToAbstract_alj :: Q.ToAbstract c_adL a_adM) ->
Q.D:ToAbstract
@ (Q.Named name_adN c_adL)
@ (Q.Named name_adN a_adM)
($ctoAbstract_alk @ c_adL @ a_adM @ name_adN $dToAbstract_alj)
$ctoAbstract_alg
:: Q.CPattern -> Q.TCMT GHC.Types.IO (Q.APattern Q.CExpr)
[LclId]
$ctoAbstract_alg =
Control.Exception.Base.noMethodBindingError
@ (Q.CPattern -> Q.TCMT GHC.Types.IO (Q.APattern Q.CExpr))
"q.hs:56:10-45|Q.toAbstract"
Q.$fToAbstractCPatternAPattern [InlPrag=INLINE (sat-args=0)]
:: Q.ToAbstract Q.CPattern (Q.APattern Q.CExpr)
[LclIdX[DFunId(nt)],
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= Q.D:ToAbstract
@ Q.CPattern @ (Q.APattern Q.CExpr) $ctoAbstract_alg}]
Q.$fToAbstractCPatternAPattern =
Q.D:ToAbstract @ Q.CPattern @ (Q.APattern Q.CExpr) $ctoAbstract_alg
$dToAbstract_alR
:: Q.ToAbstract
(Q.Named GHC.Base.String Q.CPattern)
(Q.Named GHC.Base.String (Q.APattern Q.CExpr))
[LclId]
$dToAbstract_alR =
Q.$fToAbstractNamedNamed
@ Q.CPattern
@ (Q.APattern Q.CExpr)
@ [GHC.Types.Char]
Q.$fToAbstractCPatternAPattern
$dToAbstract_alJ
:: Q.ToAbstract
(Q.Arg (Q.Named GHC.Base.String Q.CPattern))
(Q.Arg (Q.Named GHC.Base.String (Q.APattern Q.CExpr)))
[LclId]
$dToAbstract_alJ =
Q.$fToAbstractArgArg
@ (Q.Named GHC.Base.String Q.CPattern)
@ (Q.Named GHC.Base.String (Q.APattern Q.CExpr))
$dToAbstract_alR
$dToAbstract_alD
:: Q.ToAbstract
[Q.Arg (Q.Named GHC.Base.String Q.CPattern)]
[Q.Arg (Q.Named GHC.Base.String (Q.APattern Q.CExpr))]
[LclId]
$dToAbstract_alD =
Q.$fToAbstract[][]
@ (Q.Arg (Q.Named GHC.Base.String Q.CPattern))
@ (Q.Arg (Q.Named GHC.Base.String (Q.APattern Q.CExpr)))
$dToAbstract_alJ
Q.$fHasFreshNameIdFreshThings [InlPrag=INLINE (sat-args=0)]
:: Q.HasFresh Q.NameId Q.FreshThings
[LclIdX[DFunId(nt)],
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= Q.D:HasFresh
@ Q.NameId
@ Q.FreshThings
(GHC.Err.undefined
@ (Q.FreshThings -> (Q.NameId, Q.FreshThings)))}]
Q.$fHasFreshNameIdFreshThings =
Q.D:HasFresh
@ Q.NameId
@ Q.FreshThings
(GHC.Err.undefined @ (Q.FreshThings -> (Q.NameId, Q.FreshThings)))
$cnextFresh_aku
:: forall i_adF.
Q.HasFresh i_adF Q.FreshThings =>
Q.TCState -> (i_adF, Q.TCState)
[LclId]
$cnextFresh_aku =
\ (@ i_adF) _ ->
GHC.Err.undefined @ (Q.TCState -> (i_adF, Q.TCState))
Q.$fHasFreshiTCState [InlPrag=INLINE (sat-args=0)]
:: forall i_adF.
Q.HasFresh i_adF Q.FreshThings =>
Q.HasFresh i_adF Q.TCState
[LclIdX[DFunId(nt)],
Unf=Unf{Src=InlineStable, TopLvl=True, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=False,boring_ok=False)
Tmpl= \ (@ i_adF)
($dHasFresh_akt [Occ=Once] :: Q.HasFresh i_adF
Q.FreshThings) ->
Q.D:HasFresh
@ i_adF @ Q.TCState ($cnextFresh_aku @ i_adF
$dHasFresh_akt)}]
Q.$fHasFreshiTCState =
\ (@ i_adF) ($dHasFresh_akt :: Q.HasFresh i_adF Q.FreshThings) ->
Q.D:HasFresh
@ i_adF @ Q.TCState ($cnextFresh_aku @ i_adF $dHasFresh_akt)
$cliftTCM_akk
:: forall (m_adD :: * -> *).
(Q.MonadState Q.TCState (Q.TCMT m_adD), GHC.Base.Monad m_adD) =>
forall a_adh. Q.TCMT GHC.Types.IO a_adh -> Q.TCMT m_adD a_adh
[LclId]
$cliftTCM_akk =
\ (@ m_adD::* -> *) _ _ (@ a_akm) ->
GHC.Err.undefined
@ (Q.TCMT GHC.Types.IO a_akm -> Q.TCMT m_adD a_akm)
Q.$fMonadTCMTCMT [InlPrag=[ALWAYS] CONLIKE]
:: forall (m_adD :: * -> *).
(Q.MonadState Q.TCState (Q.TCMT m_adD), GHC.Base.Monad m_adD) =>
Q.MonadTCM (Q.TCMT m_adD)
[LclIdX[DFunId[1]],
Unf=DFun(arity=3) Q.D:MonadTCM [<1>, {$cliftTCM_akk}]]
Q.$fMonadTCMTCMT =
\ (@ m_adD::* -> *)
($dMonadState_akh :: Q.MonadState Q.TCState (Q.TCMT m_adD))
($dMonad_aki :: GHC.Base.Monad m_adD) ->
Q.D:MonadTCM
@ (Q.TCMT m_adD)
$dMonadState_akh
($cliftTCM_akk @ m_adD $dMonadState_akh $dMonad_aki)
Rec {
Q.$fMonadTCMT [InlPrag=[ALWAYS] CONLIKE]
:: forall (m_adC :: * -> *). GHC.Base.Monad (Q.TCMT m_adC)
[LclIdX[DFunId],
Unf=DFun(arity=1) GHC.Base.D:Monad [{\ (@ m_adC::* -> *)
(@ a_ajX)
(@ b_ajY) ->
GHC.Err.undefined
@ (Q.TCMT m_adC a_ajX
-> (a_ajX -> Q.TCMT m_adC
b_ajY)
-> Q.TCMT m_adC b_ajY)},
{$c>>_ak1},
{\ (@ m_adC::* -> *) (@ a_ak9) ->
GHC.Err.undefined @ (a_ak9 ->
Q.TCMT m_adC a_ak9)},
{\ (@ m_adC::* -> *) (@ a_ake) ->
GHC.Err.undefined
@ (GHC.Base.String -> Q.TCMT
m_adC a_ake)}]]
Q.$fMonadTCMT =
\ (@ m_adC::* -> *) ->
GHC.Base.D:Monad
@ (Q.TCMT m_adC)
((\ (@ m_adC::* -> *) (@ a_ajX) (@ b_ajY) ->
GHC.Err.undefined
@ (Q.TCMT m_adC a_ajX
-> (a_ajX -> Q.TCMT m_adC b_ajY)
-> Q.TCMT m_adC b_ajY))
@ m_adC)
($c>>_ak1 @ m_adC)
((\ (@ m_adC::* -> *) (@ a_ak9) ->
GHC.Err.undefined @ (a_ak9 -> Q.TCMT m_adC a_ak9))
@ m_adC)
((\ (@ m_adC::* -> *) (@ a_ake) ->
GHC.Err.undefined @ (GHC.Base.String -> Q.TCMT m_adC a_ake))
@ m_adC)
$c>>_ak1 [Occ=LoopBreaker]
:: forall (m_adC :: * -> *) a_amc b_amd.
Q.TCMT m_adC a_amc -> Q.TCMT m_adC b_amd -> Q.TCMT m_adC b_amd
[LclId]
$c>>_ak1 =
\ (@ m_adC::* -> *) ->
GHC.Base.$dm>> @ (Q.TCMT m_adC) (Q.$fMonadTCMT @ m_adC)
end Rec }
$dMonadState_alw :: Q.MonadState Q.TCState (Q.TCMT GHC.Types.IO)
[LclId]
$dMonadState_alw =
Q.$fMonadStateTCStateTCMT
@ GHC.Types.IO (Q.$fMonadTCMT @ GHC.Types.IO) GHC.Base.$fMonadIO
$dMonadTCM_al8 :: Q.MonadTCM (Q.TCMT GHC.Types.IO)
[LclId]
$dMonadTCM_al8 =
Q.$fMonadTCMTCMT @ GHC.Types.IO $dMonadState_alw GHC.Base.$fMonadIO
$ctoAbstract_akA :: Q.LetDef -> Q.TCMT GHC.Types.IO [Q.ALetBinding]
[LclId]
$ctoAbstract_akA =
\ _ ->
let {
lambda_adI
:: forall t_akX t_akY (m_akZ :: * -> *) b_al0.
Q.MonadTCM m_akZ =>
t_akX -> t_akY -> m_akZ b_al0
[LclId]
lambda_adI =
\ (@ t_akX)
(@ t_akY)
(@ m_akZ::* -> *)
(@ b_al0)
($dMonadTCM_al1 :: Q.MonadTCM m_akZ) ->
let {
$dHasFresh_akQ :: Q.HasFresh Q.NameId Q.TCState
[LclId]
$dHasFresh_akQ =
Q.$fHasFreshiTCState @ Q.NameId
Q.$fHasFreshNameIdFreshThings } in
let {
$dMonad_akG :: GHC.Base.Monad m_akZ
[LclId]
$dMonad_akG =
Q.$p1MonadState
@ Q.TCState @ m_akZ (Q.$p1MonadTCM @ m_akZ $dMonadTCM_al1)
} in
\ _ _ ->
GHC.Base.>>=
@ m_akZ
$dMonad_akG
@ Q.Name
@ b_al0
(Q.freshNoName
@ Q.TCState
@ m_akZ
$dMonadState_akN
$dHasFresh_akQ
(GHC.Err.undefined @ Q.Range))
(\ _ ->
GHC.Base.return
@ m_akZ $dMonad_akG @ b_al0 (GHC.Err.undefined @
b_al0)) } in
GHC.Base.>>=
@ (Q.TCMT GHC.Types.IO)
(Q.$fMonadTCMT @ GHC.Types.IO)
@ GHC.Prim.Any
@ [Q.ALetBinding]
((\ (@ b_alb) ->
GHC.Base.$
@ ([Q.Arg (Q.Named GHC.Base.String (Q.APattern Q.CExpr))]
-> Q.TCMT GHC.Types.IO b_alb)
@ (Q.TCMT GHC.Types.IO b_alb)
(Q.localToAbstract
@ [Q.Arg (Q.Named GHC.Base.String Q.CPattern)]
@ [Q.Arg (Q.Named GHC.Base.String (Q.APattern Q.CExpr))]
@ b_alb
$dToAbstract_alD
Q.lhsArgs)
(\ _ ->
Control.Monad.foldM
@ (Q.TCMT GHC.Types.IO)
@ b_alb
@ GHC.Prim.Any
(Q.$fMonadTCMT @ GHC.Types.IO)
(lambda_adI
@ b_alb
@ GHC.Prim.Any
@ (Q.TCMT GHC.Types.IO)
@ b_alb
$dMonadTCM_al8)
(GHC.Err.undefined @ b_alb)
(GHC.Err.undefined @ [GHC.Prim.Any])))
@ GHC.Prim.Any)
(\ _ -> GHC.Err.undefined @ (Q.TCMT GHC.Types.IO [Q.ALetBinding]))
Q.$fToAbstractLetDef[] [InlPrag=INLINE (sat-args=0)]
:: Q.ToAbstract Q.LetDef [Q.ALetBinding]
[LclIdX[DFunId(nt)],
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= Q.D:ToAbstract
@ Q.LetDef @ [Q.ALetBinding] $ctoAbstract_akA}]
Q.$fToAbstractLetDef[] =
Q.D:ToAbstract @ Q.LetDef @ [Q.ALetBinding] $ctoAbstract_akA
*** End of Offense ***
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/4969>
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