module UHC.Light.Compiler.Core.Trf.InlineLetAlias(cmodTrfInlineLetAlias) where
import Data.Maybe
import qualified Data.Map as Map
import qualified Data.Set as Set
import UHC.Light.Compiler.Base.Common
import UHC.Light.Compiler.Base.HsName.Builtin
import UHC.Light.Compiler.Core
import UHC.Light.Compiler.Ty
import UHC.Light.Compiler.AbstractCore
import UHC.Util.Utils
import qualified Data.Set as Set
cmodTrfInlineLetAlias :: HsNameS -> CModule -> CModule
cmodTrfInlineLetAlias globNmS cmod
= let t = wrap_CodeAGItf (sem_CodeAGItf (CodeAGItf_AGItf cmod))
(Inh_CodeAGItf {noTrfNmS_Inh_CodeAGItf = globNmS})
in cTrf_Syn_CodeAGItf t
type NmMp = Map.Map HsName CExpr
trackNames :: Track -> [HsName]
trackNames (TrackSelect n t) = trackNames t
trackNames (TrackVarApply x ts) = x : concatMap trackNames ts
trackNames _ = []
substTrack :: NmMp -> Track -> Track
substTrack m (TrackSelect n t) = TrackSelect n (substTrack m t)
substTrack m (TrackVarApply x ts) = TrackVarApply (maybe x (fromJust . cexprMbVar) (Map.lookup x m)) (map (substTrack m) ts)
substTrack _ t = t
sem_CAlt :: CAlt ->
T_CAlt
sem_CAlt (CAlt_Alt _pat _expr) =
(sem_CAlt_Alt (sem_CPat _pat) (sem_CExpr _expr))
type T_CAlt = Bool ->
CVarIntroMp ->
CVarIntroMp ->
Int ->
NmMp ->
HsNameS ->
( CAlt,FvS,Int)
sem_CAlt_Alt :: T_CPat ->
T_CExpr ->
T_CAlt
sem_CAlt_Alt pat_ expr_ =
(\ _lhsIallowTrfToCon
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp
_lhsInoTrfToConNmS ->
(let _exprOcvarIntroMp :: CVarIntroMp
_exprOintroCVarIntroMp :: CVarIntroMp
_lhsOlevOf :: Int
_exprOnmMp :: NmMp
_lhsOfvS :: FvS
_lhsOcTrf :: CAlt
_patOcvarIntroMp :: CVarIntroMp
_patOintroCVarIntroMp :: CVarIntroMp
_patOlev :: Int
_patOnmMp :: NmMp
_exprOallowTrfToCon :: Bool
_exprOlev :: Int
_exprOnoTrfNmS :: HsNameS
_exprOnoTrfToConNmS :: HsNameS
_patIcTrf :: CPat
_patIfldNmL :: ([HsName])
_patIfvS :: FvS
_patIlevOf :: Int
_patInmL :: ([HsName])
_exprIbindNmMp :: NmMp
_exprIcTrf :: CExpr
_exprIfvS :: FvS
_exprIlevOf :: Int
_exprImbRepl :: (Maybe CExpr)
_cvi =
emptyCVarIntro { cviLev = _lev }
_exprOcvarIntroMp =
Map.fromList (zip _patInmL (repeat _cvi)) `Map.union` _lhsIcvarIntroMp
_exprOintroCVarIntroMp =
Map.fromList (zip _patInmL (repeat _cvi)) `Map.union` _lhsIintroCVarIntroMp
_lhsOlevOf =
fvsLev _lhsIcvarIntroMp cLevModule _exprIfvS
_fvS =
_exprIfvS `Set.difference` Set.fromList _patInmL
_lev =
_lhsIlev + 1
_noTrfNmS =
Set.empty
_exprOnmMp =
foldr Map.delete _lhsInmMp _patInmL
_lhsOfvS =
_fvS
_cTrf =
CAlt_Alt _patIcTrf _exprIcTrf
_lhsOcTrf =
_cTrf
_patOcvarIntroMp =
_lhsIcvarIntroMp
_patOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_patOlev =
_lev
_patOnmMp =
_lhsInmMp
_exprOallowTrfToCon =
_lhsIallowTrfToCon
_exprOlev =
_lev
_exprOnoTrfNmS =
_noTrfNmS
_exprOnoTrfToConNmS =
_lhsInoTrfToConNmS
( _patIcTrf,_patIfldNmL,_patIfvS,_patIlevOf,_patInmL) =
pat_ _patOcvarIntroMp _patOintroCVarIntroMp _patOlev _patOnmMp
( _exprIbindNmMp,_exprIcTrf,_exprIfvS,_exprIlevOf,_exprImbRepl) =
expr_ _exprOallowTrfToCon _exprOcvarIntroMp _exprOintroCVarIntroMp _exprOlev _exprOnmMp _exprOnoTrfNmS _exprOnoTrfToConNmS
in ( _lhsOcTrf,_lhsOfvS,_lhsOlevOf)))
sem_CAltL :: CAltL ->
T_CAltL
sem_CAltL list =
(Prelude.foldr sem_CAltL_Cons sem_CAltL_Nil (Prelude.map sem_CAlt list))
type T_CAltL = Bool ->
CVarIntroMp ->
CVarIntroMp ->
Int ->
NmMp ->
HsNameS ->
( CAltL,FvS,Int)
sem_CAltL_Cons :: T_CAlt ->
T_CAltL ->
T_CAltL
sem_CAltL_Cons hd_ tl_ =
(\ _lhsIallowTrfToCon
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp
_lhsInoTrfToConNmS ->
(let _lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CAltL
_hdOallowTrfToCon :: Bool
_hdOcvarIntroMp :: CVarIntroMp
_hdOintroCVarIntroMp :: CVarIntroMp
_hdOlev :: Int
_hdOnmMp :: NmMp
_hdOnoTrfToConNmS :: HsNameS
_tlOallowTrfToCon :: Bool
_tlOcvarIntroMp :: CVarIntroMp
_tlOintroCVarIntroMp :: CVarIntroMp
_tlOlev :: Int
_tlOnmMp :: NmMp
_tlOnoTrfToConNmS :: HsNameS
_hdIcTrf :: CAlt
_hdIfvS :: FvS
_hdIlevOf :: Int
_tlIcTrf :: CAltL
_tlIfvS :: FvS
_tlIlevOf :: Int
_lhsOfvS =
_hdIfvS `Set.union` _tlIfvS
_lhsOlevOf =
_hdIlevOf `max` _tlIlevOf
_cTrf =
(:) _hdIcTrf _tlIcTrf
_lhsOcTrf =
_cTrf
_hdOallowTrfToCon =
_lhsIallowTrfToCon
_hdOcvarIntroMp =
_lhsIcvarIntroMp
_hdOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_hdOlev =
_lhsIlev
_hdOnmMp =
_lhsInmMp
_hdOnoTrfToConNmS =
_lhsInoTrfToConNmS
_tlOallowTrfToCon =
_lhsIallowTrfToCon
_tlOcvarIntroMp =
_lhsIcvarIntroMp
_tlOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_tlOlev =
_lhsIlev
_tlOnmMp =
_lhsInmMp
_tlOnoTrfToConNmS =
_lhsInoTrfToConNmS
( _hdIcTrf,_hdIfvS,_hdIlevOf) =
hd_ _hdOallowTrfToCon _hdOcvarIntroMp _hdOintroCVarIntroMp _hdOlev _hdOnmMp _hdOnoTrfToConNmS
( _tlIcTrf,_tlIfvS,_tlIlevOf) =
tl_ _tlOallowTrfToCon _tlOcvarIntroMp _tlOintroCVarIntroMp _tlOlev _tlOnmMp _tlOnoTrfToConNmS
in ( _lhsOcTrf,_lhsOfvS,_lhsOlevOf)))
sem_CAltL_Nil :: T_CAltL
sem_CAltL_Nil =
(\ _lhsIallowTrfToCon
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp
_lhsInoTrfToConNmS ->
(let _lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CAltL
_lhsOfvS =
Set.empty
_lhsOlevOf =
cLevModule
_cTrf =
[]
_lhsOcTrf =
_cTrf
in ( _lhsOcTrf,_lhsOfvS,_lhsOlevOf)))
sem_CBind :: CBind ->
T_CBind
sem_CBind (CBind_Bind _nm _bindAspects) =
(sem_CBind_Bind _nm (sem_CBoundL _bindAspects))
type T_CBind = Bool ->
CVarIntroMp ->
CVarIntroMp ->
Bool ->
Int ->
NmMp ->
HsNameS ->
HsNameS ->
( ([(HsName,CBind)]),NmMp,CVarIntroMp,HsNameS,CBind,CVarIntroMp,FvS,FvSMp,Int,HsName,([HsName]))
sem_CBind_Bind :: HsName ->
T_CBoundL ->
T_CBind
sem_CBind_Bind nm_ bindAspects_ =
(\ _lhsIallowTrfToCon
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIisGlobal
_lhsIlev
_lhsInmMp
_lhsInoTrfNmS
_lhsInoTrfToConNmS ->
(let _lhsOfvSMp :: FvSMp
_lhsOnmL :: ([HsName])
_bindAspectsOnm :: HsName
_lhsOnm :: HsName
_lhsObindL :: ([(HsName,CBind)])
_lhsObindNmMp :: NmMp
_lhsObindsIntroCVarIntroMp :: CVarIntroMp
_lhsObindsNoTrfNmS :: HsNameS
_lhsOcvarIntroExprMp :: CVarIntroMp
_lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CBind
_bindAspectsOallowTrfToCon :: Bool
_bindAspectsOaspBindNmMp :: (ACoreBindAspMp NmMp)
_bindAspectsOcvarIntroMp :: CVarIntroMp
_bindAspectsOintroCVarIntroMp :: CVarIntroMp
_bindAspectsOisGlobal :: Bool
_bindAspectsOlev :: Int
_bindAspectsOnmMp :: NmMp
_bindAspectsOnoTrfNmS :: HsNameS
_bindAspectsOnoTrfToConNmS :: HsNameS
_bindAspectsIbindL :: ([(HsName,CBind)])
_bindAspectsIbindNmMp :: NmMp
_bindAspectsIbindsIntroCVarIntroMp :: CVarIntroMp
_bindAspectsIbindsNoTrfNmS :: HsNameS
_bindAspectsIcTrf :: CBoundL
_bindAspectsIcvarIntroExprMp :: CVarIntroMp
_bindAspectsIfvS :: FvS
_bindAspectsIfvSMp :: FvSMp
_bindAspectsIgathAspBindNmMp :: (ACoreBindAspMp NmMp)
_bindAspectsIlevOf :: Int
_bindAspectsInmL :: ([HsName])
_lhsOfvSMp =
Map.singleton nm_ _bindAspectsIfvS
_lhsOnmL =
[nm_]
_bindAspectsOnm =
nm_
_lhsOnm =
nm_
_aspBindNmMp =
_bindAspectsIgathAspBindNmMp
_lhsObindL =
_bindAspectsIbindL
_lhsObindNmMp =
_bindAspectsIbindNmMp
_lhsObindsIntroCVarIntroMp =
_bindAspectsIbindsIntroCVarIntroMp
_lhsObindsNoTrfNmS =
_bindAspectsIbindsNoTrfNmS
_lhsOcvarIntroExprMp =
_bindAspectsIcvarIntroExprMp
_lhsOfvS =
_bindAspectsIfvS
_lhsOlevOf =
_bindAspectsIlevOf
_cTrf =
CBind_Bind nm_ _bindAspectsIcTrf
_lhsOcTrf =
_cTrf
_bindAspectsOallowTrfToCon =
_lhsIallowTrfToCon
_bindAspectsOaspBindNmMp =
_aspBindNmMp
_bindAspectsOcvarIntroMp =
_lhsIcvarIntroMp
_bindAspectsOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_bindAspectsOisGlobal =
_lhsIisGlobal
_bindAspectsOlev =
_lhsIlev
_bindAspectsOnmMp =
_lhsInmMp
_bindAspectsOnoTrfNmS =
_lhsInoTrfNmS
_bindAspectsOnoTrfToConNmS =
_lhsInoTrfToConNmS
( _bindAspectsIbindL,_bindAspectsIbindNmMp,_bindAspectsIbindsIntroCVarIntroMp,_bindAspectsIbindsNoTrfNmS,_bindAspectsIcTrf,_bindAspectsIcvarIntroExprMp,_bindAspectsIfvS,_bindAspectsIfvSMp,_bindAspectsIgathAspBindNmMp,_bindAspectsIlevOf,_bindAspectsInmL) =
bindAspects_ _bindAspectsOallowTrfToCon _bindAspectsOaspBindNmMp _bindAspectsOcvarIntroMp _bindAspectsOintroCVarIntroMp _bindAspectsOisGlobal _bindAspectsOlev _bindAspectsOnm _bindAspectsOnmMp _bindAspectsOnoTrfNmS _bindAspectsOnoTrfToConNmS
in ( _lhsObindL,_lhsObindNmMp,_lhsObindsIntroCVarIntroMp,_lhsObindsNoTrfNmS,_lhsOcTrf,_lhsOcvarIntroExprMp,_lhsOfvS,_lhsOfvSMp,_lhsOlevOf,_lhsOnm,_lhsOnmL)))
sem_CBindAnn :: CBindAnn ->
T_CBindAnn
sem_CBindAnn (CBindAnn_Coe _coe) =
(sem_CBindAnn_Coe _coe)
type T_CBindAnn = CVarIntroMp ->
CVarIntroMp ->
Int ->
NmMp ->
( CBindAnn,FvS,Int,([HsName]))
sem_CBindAnn_Coe :: (()) ->
T_CBindAnn
sem_CBindAnn_Coe coe_ =
(\ _lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp ->
(let _lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOnmL :: ([HsName])
_lhsOcTrf :: CBindAnn
_lhsOfvS =
Set.empty
_lhsOlevOf =
cLevModule
_lhsOnmL =
[]
_cTrf =
CBindAnn_Coe coe_
_lhsOcTrf =
_cTrf
in ( _lhsOcTrf,_lhsOfvS,_lhsOlevOf,_lhsOnmL)))
sem_CBindAnnL :: CBindAnnL ->
T_CBindAnnL
sem_CBindAnnL list =
(Prelude.foldr sem_CBindAnnL_Cons sem_CBindAnnL_Nil (Prelude.map sem_CBindAnn list))
type T_CBindAnnL = CVarIntroMp ->
CVarIntroMp ->
Int ->
NmMp ->
( CBindAnnL,FvS,Int,([HsName]))
sem_CBindAnnL_Cons :: T_CBindAnn ->
T_CBindAnnL ->
T_CBindAnnL
sem_CBindAnnL_Cons hd_ tl_ =
(\ _lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp ->
(let _lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOnmL :: ([HsName])
_lhsOcTrf :: CBindAnnL
_hdOcvarIntroMp :: CVarIntroMp
_hdOintroCVarIntroMp :: CVarIntroMp
_hdOlev :: Int
_hdOnmMp :: NmMp
_tlOcvarIntroMp :: CVarIntroMp
_tlOintroCVarIntroMp :: CVarIntroMp
_tlOlev :: Int
_tlOnmMp :: NmMp
_hdIcTrf :: CBindAnn
_hdIfvS :: FvS
_hdIlevOf :: Int
_hdInmL :: ([HsName])
_tlIcTrf :: CBindAnnL
_tlIfvS :: FvS
_tlIlevOf :: Int
_tlInmL :: ([HsName])
_lhsOfvS =
_hdIfvS `Set.union` _tlIfvS
_lhsOlevOf =
_hdIlevOf `max` _tlIlevOf
_lhsOnmL =
_hdInmL ++ _tlInmL
_cTrf =
(:) _hdIcTrf _tlIcTrf
_lhsOcTrf =
_cTrf
_hdOcvarIntroMp =
_lhsIcvarIntroMp
_hdOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_hdOlev =
_lhsIlev
_hdOnmMp =
_lhsInmMp
_tlOcvarIntroMp =
_lhsIcvarIntroMp
_tlOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_tlOlev =
_lhsIlev
_tlOnmMp =
_lhsInmMp
( _hdIcTrf,_hdIfvS,_hdIlevOf,_hdInmL) =
hd_ _hdOcvarIntroMp _hdOintroCVarIntroMp _hdOlev _hdOnmMp
( _tlIcTrf,_tlIfvS,_tlIlevOf,_tlInmL) =
tl_ _tlOcvarIntroMp _tlOintroCVarIntroMp _tlOlev _tlOnmMp
in ( _lhsOcTrf,_lhsOfvS,_lhsOlevOf,_lhsOnmL)))
sem_CBindAnnL_Nil :: T_CBindAnnL
sem_CBindAnnL_Nil =
(\ _lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp ->
(let _lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOnmL :: ([HsName])
_lhsOcTrf :: CBindAnnL
_lhsOfvS =
Set.empty
_lhsOlevOf =
cLevModule
_lhsOnmL =
[]
_cTrf =
[]
_lhsOcTrf =
_cTrf
in ( _lhsOcTrf,_lhsOfvS,_lhsOlevOf,_lhsOnmL)))
sem_CBindL :: CBindL ->
T_CBindL
sem_CBindL list =
(Prelude.foldr sem_CBindL_Cons sem_CBindL_Nil (Prelude.map sem_CBind list))
type T_CBindL = Bool ->
CVarIntroMp ->
CVarIntroMp ->
Bool ->
Int ->
NmMp ->
HsNameS ->
HsNameS ->
( ([(HsName,CBind)]),NmMp,CVarIntroMp,HsNameS,CBindL,CVarIntroMp,FvS,FvSMp,Int,([HsName]))
sem_CBindL_Cons :: T_CBind ->
T_CBindL ->
T_CBindL
sem_CBindL_Cons hd_ tl_ =
(\ _lhsIallowTrfToCon
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIisGlobal
_lhsIlev
_lhsInmMp
_lhsInoTrfNmS
_lhsInoTrfToConNmS ->
(let _lhsObindL :: ([(HsName,CBind)])
_lhsObindNmMp :: NmMp
_lhsObindsIntroCVarIntroMp :: CVarIntroMp
_lhsObindsNoTrfNmS :: HsNameS
_lhsOcvarIntroExprMp :: CVarIntroMp
_lhsOfvS :: FvS
_lhsOfvSMp :: FvSMp
_lhsOlevOf :: Int
_lhsOnmL :: ([HsName])
_lhsOcTrf :: CBindL
_hdOallowTrfToCon :: Bool
_hdOcvarIntroMp :: CVarIntroMp
_hdOintroCVarIntroMp :: CVarIntroMp
_hdOisGlobal :: Bool
_hdOlev :: Int
_hdOnmMp :: NmMp
_hdOnoTrfNmS :: HsNameS
_hdOnoTrfToConNmS :: HsNameS
_tlOallowTrfToCon :: Bool
_tlOcvarIntroMp :: CVarIntroMp
_tlOintroCVarIntroMp :: CVarIntroMp
_tlOisGlobal :: Bool
_tlOlev :: Int
_tlOnmMp :: NmMp
_tlOnoTrfNmS :: HsNameS
_tlOnoTrfToConNmS :: HsNameS
_hdIbindL :: ([(HsName,CBind)])
_hdIbindNmMp :: NmMp
_hdIbindsIntroCVarIntroMp :: CVarIntroMp
_hdIbindsNoTrfNmS :: HsNameS
_hdIcTrf :: CBind
_hdIcvarIntroExprMp :: CVarIntroMp
_hdIfvS :: FvS
_hdIfvSMp :: FvSMp
_hdIlevOf :: Int
_hdInm :: HsName
_hdInmL :: ([HsName])
_tlIbindL :: ([(HsName,CBind)])
_tlIbindNmMp :: NmMp
_tlIbindsIntroCVarIntroMp :: CVarIntroMp
_tlIbindsNoTrfNmS :: HsNameS
_tlIcTrf :: CBindL
_tlIcvarIntroExprMp :: CVarIntroMp
_tlIfvS :: FvS
_tlIfvSMp :: FvSMp
_tlIlevOf :: Int
_tlInmL :: ([HsName])
_lhsObindL =
_hdIbindL ++ _tlIbindL
_lhsObindNmMp =
_hdIbindNmMp `Map.union` _tlIbindNmMp
_lhsObindsIntroCVarIntroMp =
_hdIbindsIntroCVarIntroMp `Map.union` _tlIbindsIntroCVarIntroMp
_lhsObindsNoTrfNmS =
_hdIbindsNoTrfNmS `Set.union` _tlIbindsNoTrfNmS
_lhsOcvarIntroExprMp =
_hdIcvarIntroExprMp `Map.union` _tlIcvarIntroExprMp
_lhsOfvS =
_hdIfvS `Set.union` _tlIfvS
_lhsOfvSMp =
_hdIfvSMp `Map.union` _tlIfvSMp
_lhsOlevOf =
_hdIlevOf `max` _tlIlevOf
_lhsOnmL =
_hdInmL ++ _tlInmL
_cTrf =
(:) _hdIcTrf _tlIcTrf
_lhsOcTrf =
_cTrf
_hdOallowTrfToCon =
_lhsIallowTrfToCon
_hdOcvarIntroMp =
_lhsIcvarIntroMp
_hdOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_hdOisGlobal =
_lhsIisGlobal
_hdOlev =
_lhsIlev
_hdOnmMp =
_lhsInmMp
_hdOnoTrfNmS =
_lhsInoTrfNmS
_hdOnoTrfToConNmS =
_lhsInoTrfToConNmS
_tlOallowTrfToCon =
_lhsIallowTrfToCon
_tlOcvarIntroMp =
_lhsIcvarIntroMp
_tlOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_tlOisGlobal =
_lhsIisGlobal
_tlOlev =
_lhsIlev
_tlOnmMp =
_lhsInmMp
_tlOnoTrfNmS =
_lhsInoTrfNmS
_tlOnoTrfToConNmS =
_lhsInoTrfToConNmS
( _hdIbindL,_hdIbindNmMp,_hdIbindsIntroCVarIntroMp,_hdIbindsNoTrfNmS,_hdIcTrf,_hdIcvarIntroExprMp,_hdIfvS,_hdIfvSMp,_hdIlevOf,_hdInm,_hdInmL) =
hd_ _hdOallowTrfToCon _hdOcvarIntroMp _hdOintroCVarIntroMp _hdOisGlobal _hdOlev _hdOnmMp _hdOnoTrfNmS _hdOnoTrfToConNmS
( _tlIbindL,_tlIbindNmMp,_tlIbindsIntroCVarIntroMp,_tlIbindsNoTrfNmS,_tlIcTrf,_tlIcvarIntroExprMp,_tlIfvS,_tlIfvSMp,_tlIlevOf,_tlInmL) =
tl_ _tlOallowTrfToCon _tlOcvarIntroMp _tlOintroCVarIntroMp _tlOisGlobal _tlOlev _tlOnmMp _tlOnoTrfNmS _tlOnoTrfToConNmS
in ( _lhsObindL,_lhsObindNmMp,_lhsObindsIntroCVarIntroMp,_lhsObindsNoTrfNmS,_lhsOcTrf,_lhsOcvarIntroExprMp,_lhsOfvS,_lhsOfvSMp,_lhsOlevOf,_lhsOnmL)))
sem_CBindL_Nil :: T_CBindL
sem_CBindL_Nil =
(\ _lhsIallowTrfToCon
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIisGlobal
_lhsIlev
_lhsInmMp
_lhsInoTrfNmS
_lhsInoTrfToConNmS ->
(let _lhsObindL :: ([(HsName,CBind)])
_lhsObindNmMp :: NmMp
_lhsObindsIntroCVarIntroMp :: CVarIntroMp
_lhsObindsNoTrfNmS :: HsNameS
_lhsOcvarIntroExprMp :: CVarIntroMp
_lhsOfvS :: FvS
_lhsOfvSMp :: FvSMp
_lhsOlevOf :: Int
_lhsOnmL :: ([HsName])
_lhsOcTrf :: CBindL
_lhsObindL =
[]
_lhsObindNmMp =
Map.empty
_lhsObindsIntroCVarIntroMp =
Map.empty
_lhsObindsNoTrfNmS =
Set.empty
_lhsOcvarIntroExprMp =
Map.empty
_lhsOfvS =
Set.empty
_lhsOfvSMp =
Map.empty
_lhsOlevOf =
cLevModule
_lhsOnmL =
[]
_cTrf =
[]
_lhsOcTrf =
_cTrf
in ( _lhsObindL,_lhsObindNmMp,_lhsObindsIntroCVarIntroMp,_lhsObindsNoTrfNmS,_lhsOcTrf,_lhsOcvarIntroExprMp,_lhsOfvS,_lhsOfvSMp,_lhsOlevOf,_lhsOnmL)))
sem_CBound :: CBound ->
T_CBound
sem_CBound (CBound_Bind _bindMeta _expr) =
(sem_CBound_Bind (sem_CMetas _bindMeta) (sem_CExpr _expr))
sem_CBound (CBound_Meta _aspectKeyS _cmetas) =
(sem_CBound_Meta _aspectKeyS (sem_CMetas _cmetas))
sem_CBound (CBound_Val _aspectKeyS _mlev _lbl _expr) =
(sem_CBound_Val _aspectKeyS _mlev _lbl (sem_CExpr _expr))
sem_CBound (CBound_Ty _aspectKeyS _ty) =
(sem_CBound_Ty _aspectKeyS _ty)
sem_CBound (CBound_FFE _callconv _expEnt _expr _ty) =
(sem_CBound_FFE _callconv _expEnt (sem_CExpr _expr) _ty)
type T_CBound = Bool ->
(ACoreBindAspMp NmMp) ->
CVarIntroMp ->
CVarIntroMp ->
Bool ->
Int ->
HsName ->
NmMp ->
HsNameS ->
HsNameS ->
( ([(HsName,CBind)]),NmMp,CVarIntroMp,HsNameS,CBound,CVarIntroMp,FvS,FvSMp,(ACoreBindAspMp NmMp),Int,([HsName]))
sem_CBound_Bind :: T_CMetas ->
T_CExpr ->
T_CBound
sem_CBound_Bind bindMeta_ expr_ =
(\ _lhsIallowTrfToCon
_lhsIaspBindNmMp
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIisGlobal
_lhsIlev
_lhsInm
_lhsInmMp
_lhsInoTrfNmS
_lhsInoTrfToConNmS ->
(let _lhsObindsIntroCVarIntroMp :: CVarIntroMp
_lhsOcvarIntroExprMp :: CVarIntroMp
_lhsObindNmMp :: NmMp
_lhsObindL :: ([(HsName,CBind)])
_exprOallowTrfToCon :: Bool
_exprOnoTrfToConNmS :: HsNameS
_lhsOgathAspBindNmMp :: (ACoreBindAspMp NmMp)
_bindMetaObindNmMp :: NmMp
_lhsObindsNoTrfNmS :: HsNameS
_lhsOfvS :: FvS
_lhsOfvSMp :: FvSMp
_lhsOlevOf :: Int
_lhsOnmL :: ([HsName])
_lhsOcTrf :: CBound
_bindMetaOcvarIntroMp :: CVarIntroMp
_bindMetaOintroCVarIntroMp :: CVarIntroMp
_bindMetaOlev :: Int
_bindMetaOnmMp :: NmMp
_exprOcvarIntroMp :: CVarIntroMp
_exprOintroCVarIntroMp :: CVarIntroMp
_exprOlev :: Int
_exprOnmMp :: NmMp
_exprOnoTrfNmS :: HsNameS
_bindMetaIcTrf :: CMetas
_bindMetaIfvS :: FvS
_bindMetaIlevOf :: Int
_bindMetaInameS :: HsNameS
_bindMetaIself :: CMetas
_exprIbindNmMp :: NmMp
_exprIcTrf :: CExpr
_exprIfvS :: FvS
_exprIlevOf :: Int
_exprImbRepl :: (Maybe CExpr)
_cmetaVal =
cmetasVal _bindMetaIself
_cvi =
emptyCVarIntro { cviLev = _lhsIlev , cviMeta = _cmetaVal }
_cviExpr =
emptyCVarIntro { cviLev = _exprIlevOf, cviMeta = _cmetaVal }
_lhsObindsIntroCVarIntroMp =
Map.singleton _lhsInm _cvi
_lhsOcvarIntroExprMp =
Map.singleton _lhsInm _cviExpr
__tup1 =
case _exprImbRepl of
Just r | _lhsInm /= hsnMain
&& not (_lhsInm `Set.member` _lhsInoTrfNmS)
-> (_lhsInm `Map.singleton` r,[(_lhsInm,acoreBind1Asp1 _lhsInm _cTrf)])
_ -> (Map.empty,[(_lhsInm,acoreBind1Asp1 _lhsInm _cTrf)])
(_lhsObindNmMp,_) =
__tup1
(_,_lhsObindL) =
__tup1
_exprOallowTrfToCon =
not (_lhsInm `Set.member` _lhsInoTrfToConNmS)
_exprOnoTrfToConNmS =
_lhsInoTrfToConNmS `Set.union` _bindMetaInameS
_lhsOgathAspBindNmMp =
Map.singleton acbaspkeyDefault _exprIbindNmMp
_bindMetaObindNmMp =
_exprIbindNmMp
_lhsObindsNoTrfNmS =
Set.empty
_lhsOfvS =
_bindMetaIfvS `Set.union` _exprIfvS
_lhsOfvSMp =
Map.empty
_lhsOlevOf =
_bindMetaIlevOf `max` _exprIlevOf
_lhsOnmL =
[]
_cTrf =
CBound_Bind _bindMetaIcTrf _exprIcTrf
_lhsOcTrf =
_cTrf
_bindMetaOcvarIntroMp =
_lhsIcvarIntroMp
_bindMetaOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_bindMetaOlev =
_lhsIlev
_bindMetaOnmMp =
_lhsInmMp
_exprOcvarIntroMp =
_lhsIcvarIntroMp
_exprOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_exprOlev =
_lhsIlev
_exprOnmMp =
_lhsInmMp
_exprOnoTrfNmS =
_lhsInoTrfNmS
( _bindMetaIcTrf,_bindMetaIfvS,_bindMetaIlevOf,_bindMetaInameS,_bindMetaIself) =
bindMeta_ _bindMetaObindNmMp _bindMetaOcvarIntroMp _bindMetaOintroCVarIntroMp _bindMetaOlev _bindMetaOnmMp
( _exprIbindNmMp,_exprIcTrf,_exprIfvS,_exprIlevOf,_exprImbRepl) =
expr_ _exprOallowTrfToCon _exprOcvarIntroMp _exprOintroCVarIntroMp _exprOlev _exprOnmMp _exprOnoTrfNmS _exprOnoTrfToConNmS
in ( _lhsObindL,_lhsObindNmMp,_lhsObindsIntroCVarIntroMp,_lhsObindsNoTrfNmS,_lhsOcTrf,_lhsOcvarIntroExprMp,_lhsOfvS,_lhsOfvSMp,_lhsOgathAspBindNmMp,_lhsOlevOf,_lhsOnmL)))
sem_CBound_Meta :: ACoreBindAspectKeyS ->
T_CMetas ->
T_CBound
sem_CBound_Meta aspectKeyS_ cmetas_ =
(\ _lhsIallowTrfToCon
_lhsIaspBindNmMp
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIisGlobal
_lhsIlev
_lhsInm
_lhsInmMp
_lhsInoTrfNmS
_lhsInoTrfToConNmS ->
(let _cmetasObindNmMp :: NmMp
_lhsObindL :: ([(HsName,CBind)])
_lhsObindNmMp :: NmMp
_lhsObindsIntroCVarIntroMp :: CVarIntroMp
_lhsObindsNoTrfNmS :: HsNameS
_lhsOcvarIntroExprMp :: CVarIntroMp
_lhsOfvS :: FvS
_lhsOfvSMp :: FvSMp
_lhsOgathAspBindNmMp :: (ACoreBindAspMp NmMp)
_lhsOlevOf :: Int
_lhsOnmL :: ([HsName])
_lhsOcTrf :: CBound
_cmetasOcvarIntroMp :: CVarIntroMp
_cmetasOintroCVarIntroMp :: CVarIntroMp
_cmetasOlev :: Int
_cmetasOnmMp :: NmMp
_cmetasIcTrf :: CMetas
_cmetasIfvS :: FvS
_cmetasIlevOf :: Int
_cmetasInameS :: HsNameS
_cmetasIself :: CMetas
_cmetasObindNmMp =
panicJust "InlineLetAlias.CBound.Meta.aspBindNmMp" $ Map.lookup acbaspkeyDefault _lhsIaspBindNmMp
_lhsObindL =
[]
_lhsObindNmMp =
Map.empty
_lhsObindsIntroCVarIntroMp =
Map.empty
_lhsObindsNoTrfNmS =
Set.empty
_lhsOcvarIntroExprMp =
Map.empty
_lhsOfvS =
_cmetasIfvS
_lhsOfvSMp =
Map.empty
_lhsOgathAspBindNmMp =
Map.empty
_lhsOlevOf =
_cmetasIlevOf
_lhsOnmL =
[]
_cTrf =
CBound_Meta aspectKeyS_ _cmetasIcTrf
_lhsOcTrf =
_cTrf
_cmetasOcvarIntroMp =
_lhsIcvarIntroMp
_cmetasOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_cmetasOlev =
_lhsIlev
_cmetasOnmMp =
_lhsInmMp
( _cmetasIcTrf,_cmetasIfvS,_cmetasIlevOf,_cmetasInameS,_cmetasIself) =
cmetas_ _cmetasObindNmMp _cmetasOcvarIntroMp _cmetasOintroCVarIntroMp _cmetasOlev _cmetasOnmMp
in ( _lhsObindL,_lhsObindNmMp,_lhsObindsIntroCVarIntroMp,_lhsObindsNoTrfNmS,_lhsOcTrf,_lhsOcvarIntroExprMp,_lhsOfvS,_lhsOfvSMp,_lhsOgathAspBindNmMp,_lhsOlevOf,_lhsOnmL)))
sem_CBound_Val :: ACoreBindAspectKeyS ->
MetaLev ->
CLbl ->
T_CExpr ->
T_CBound
sem_CBound_Val aspectKeyS_ mlev_ lbl_ expr_ =
(\ _lhsIallowTrfToCon
_lhsIaspBindNmMp
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIisGlobal
_lhsIlev
_lhsInm
_lhsInmMp
_lhsInoTrfNmS
_lhsInoTrfToConNmS ->
(let _lhsObindL :: ([(HsName,CBind)])
_lhsObindNmMp :: NmMp
_lhsObindsIntroCVarIntroMp :: CVarIntroMp
_lhsObindsNoTrfNmS :: HsNameS
_lhsOcvarIntroExprMp :: CVarIntroMp
_lhsOfvS :: FvS
_lhsOfvSMp :: FvSMp
_lhsOgathAspBindNmMp :: (ACoreBindAspMp NmMp)
_lhsOlevOf :: Int
_lhsOnmL :: ([HsName])
_lhsOcTrf :: CBound
_exprOallowTrfToCon :: Bool
_exprOcvarIntroMp :: CVarIntroMp
_exprOintroCVarIntroMp :: CVarIntroMp
_exprOlev :: Int
_exprOnmMp :: NmMp
_exprOnoTrfNmS :: HsNameS
_exprOnoTrfToConNmS :: HsNameS
_exprIbindNmMp :: NmMp
_exprIcTrf :: CExpr
_exprIfvS :: FvS
_exprIlevOf :: Int
_exprImbRepl :: (Maybe CExpr)
_lhsObindL =
[]
_lhsObindNmMp =
_exprIbindNmMp
_lhsObindsIntroCVarIntroMp =
Map.empty
_lhsObindsNoTrfNmS =
Set.empty
_lhsOcvarIntroExprMp =
Map.empty
_lhsOfvS =
_exprIfvS
_lhsOfvSMp =
Map.empty
_lhsOgathAspBindNmMp =
Map.empty
_lhsOlevOf =
_exprIlevOf
_lhsOnmL =
[]
_cTrf =
CBound_Val aspectKeyS_ mlev_ lbl_ _exprIcTrf
_lhsOcTrf =
_cTrf
_exprOallowTrfToCon =
_lhsIallowTrfToCon
_exprOcvarIntroMp =
_lhsIcvarIntroMp
_exprOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_exprOlev =
_lhsIlev
_exprOnmMp =
_lhsInmMp
_exprOnoTrfNmS =
_lhsInoTrfNmS
_exprOnoTrfToConNmS =
_lhsInoTrfToConNmS
( _exprIbindNmMp,_exprIcTrf,_exprIfvS,_exprIlevOf,_exprImbRepl) =
expr_ _exprOallowTrfToCon _exprOcvarIntroMp _exprOintroCVarIntroMp _exprOlev _exprOnmMp _exprOnoTrfNmS _exprOnoTrfToConNmS
in ( _lhsObindL,_lhsObindNmMp,_lhsObindsIntroCVarIntroMp,_lhsObindsNoTrfNmS,_lhsOcTrf,_lhsOcvarIntroExprMp,_lhsOfvS,_lhsOfvSMp,_lhsOgathAspBindNmMp,_lhsOlevOf,_lhsOnmL)))
sem_CBound_Ty :: ACoreBindAspectKeyS ->
Ty ->
T_CBound
sem_CBound_Ty aspectKeyS_ ty_ =
(\ _lhsIallowTrfToCon
_lhsIaspBindNmMp
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIisGlobal
_lhsIlev
_lhsInm
_lhsInmMp
_lhsInoTrfNmS
_lhsInoTrfToConNmS ->
(let _lhsObindL :: ([(HsName,CBind)])
_lhsObindNmMp :: NmMp
_lhsObindsIntroCVarIntroMp :: CVarIntroMp
_lhsObindsNoTrfNmS :: HsNameS
_lhsOcvarIntroExprMp :: CVarIntroMp
_lhsOfvS :: FvS
_lhsOfvSMp :: FvSMp
_lhsOgathAspBindNmMp :: (ACoreBindAspMp NmMp)
_lhsOlevOf :: Int
_lhsOnmL :: ([HsName])
_lhsOcTrf :: CBound
_lhsObindL =
[]
_lhsObindNmMp =
Map.empty
_lhsObindsIntroCVarIntroMp =
Map.empty
_lhsObindsNoTrfNmS =
Set.empty
_lhsOcvarIntroExprMp =
Map.empty
_lhsOfvS =
Set.empty
_lhsOfvSMp =
Map.empty
_lhsOgathAspBindNmMp =
Map.empty
_lhsOlevOf =
cLevModule
_lhsOnmL =
[]
_cTrf =
CBound_Ty aspectKeyS_ ty_
_lhsOcTrf =
_cTrf
in ( _lhsObindL,_lhsObindNmMp,_lhsObindsIntroCVarIntroMp,_lhsObindsNoTrfNmS,_lhsOcTrf,_lhsOcvarIntroExprMp,_lhsOfvS,_lhsOfvSMp,_lhsOgathAspBindNmMp,_lhsOlevOf,_lhsOnmL)))
sem_CBound_FFE :: FFIWay ->
ForeignEnt ->
T_CExpr ->
Ty ->
T_CBound
sem_CBound_FFE callconv_ expEnt_ expr_ ty_ =
(\ _lhsIallowTrfToCon
_lhsIaspBindNmMp
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIisGlobal
_lhsIlev
_lhsInm
_lhsInmMp
_lhsInoTrfNmS
_lhsInoTrfToConNmS ->
(let _lhsObindL :: ([(HsName,CBind)])
_lhsObindNmMp :: NmMp
_lhsObindsIntroCVarIntroMp :: CVarIntroMp
_lhsObindsNoTrfNmS :: HsNameS
_lhsOcvarIntroExprMp :: CVarIntroMp
_lhsOfvS :: FvS
_lhsOfvSMp :: FvSMp
_lhsOgathAspBindNmMp :: (ACoreBindAspMp NmMp)
_lhsOlevOf :: Int
_lhsOnmL :: ([HsName])
_lhsOcTrf :: CBound
_exprOallowTrfToCon :: Bool
_exprOcvarIntroMp :: CVarIntroMp
_exprOintroCVarIntroMp :: CVarIntroMp
_exprOlev :: Int
_exprOnmMp :: NmMp
_exprOnoTrfNmS :: HsNameS
_exprOnoTrfToConNmS :: HsNameS
_exprIbindNmMp :: NmMp
_exprIcTrf :: CExpr
_exprIfvS :: FvS
_exprIlevOf :: Int
_exprImbRepl :: (Maybe CExpr)
_bindsNoTrfNmS =
_exprIfvS
_lhsObindL =
[]
_lhsObindNmMp =
_exprIbindNmMp
_lhsObindsIntroCVarIntroMp =
Map.empty
_lhsObindsNoTrfNmS =
_bindsNoTrfNmS
_lhsOcvarIntroExprMp =
Map.empty
_lhsOfvS =
_exprIfvS
_lhsOfvSMp =
Map.empty
_lhsOgathAspBindNmMp =
Map.empty
_lhsOlevOf =
_exprIlevOf
_lhsOnmL =
[]
_cTrf =
CBound_FFE callconv_ expEnt_ _exprIcTrf ty_
_lhsOcTrf =
_cTrf
_exprOallowTrfToCon =
_lhsIallowTrfToCon
_exprOcvarIntroMp =
_lhsIcvarIntroMp
_exprOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_exprOlev =
_lhsIlev
_exprOnmMp =
_lhsInmMp
_exprOnoTrfNmS =
_lhsInoTrfNmS
_exprOnoTrfToConNmS =
_lhsInoTrfToConNmS
( _exprIbindNmMp,_exprIcTrf,_exprIfvS,_exprIlevOf,_exprImbRepl) =
expr_ _exprOallowTrfToCon _exprOcvarIntroMp _exprOintroCVarIntroMp _exprOlev _exprOnmMp _exprOnoTrfNmS _exprOnoTrfToConNmS
in ( _lhsObindL,_lhsObindNmMp,_lhsObindsIntroCVarIntroMp,_lhsObindsNoTrfNmS,_lhsOcTrf,_lhsOcvarIntroExprMp,_lhsOfvS,_lhsOfvSMp,_lhsOgathAspBindNmMp,_lhsOlevOf,_lhsOnmL)))
sem_CBoundL :: CBoundL ->
T_CBoundL
sem_CBoundL list =
(Prelude.foldr sem_CBoundL_Cons sem_CBoundL_Nil (Prelude.map sem_CBound list))
type T_CBoundL = Bool ->
(ACoreBindAspMp NmMp) ->
CVarIntroMp ->
CVarIntroMp ->
Bool ->
Int ->
HsName ->
NmMp ->
HsNameS ->
HsNameS ->
( ([(HsName,CBind)]),NmMp,CVarIntroMp,HsNameS,CBoundL,CVarIntroMp,FvS,FvSMp,(ACoreBindAspMp NmMp),Int,([HsName]))
sem_CBoundL_Cons :: T_CBound ->
T_CBoundL ->
T_CBoundL
sem_CBoundL_Cons hd_ tl_ =
(\ _lhsIallowTrfToCon
_lhsIaspBindNmMp
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIisGlobal
_lhsIlev
_lhsInm
_lhsInmMp
_lhsInoTrfNmS
_lhsInoTrfToConNmS ->
(let _lhsObindL :: ([(HsName,CBind)])
_lhsObindNmMp :: NmMp
_lhsObindsIntroCVarIntroMp :: CVarIntroMp
_lhsObindsNoTrfNmS :: HsNameS
_lhsOcvarIntroExprMp :: CVarIntroMp
_lhsOfvS :: FvS
_lhsOfvSMp :: FvSMp
_lhsOgathAspBindNmMp :: (ACoreBindAspMp NmMp)
_lhsOlevOf :: Int
_lhsOnmL :: ([HsName])
_lhsOcTrf :: CBoundL
_hdOallowTrfToCon :: Bool
_hdOaspBindNmMp :: (ACoreBindAspMp NmMp)
_hdOcvarIntroMp :: CVarIntroMp
_hdOintroCVarIntroMp :: CVarIntroMp
_hdOisGlobal :: Bool
_hdOlev :: Int
_hdOnm :: HsName
_hdOnmMp :: NmMp
_hdOnoTrfNmS :: HsNameS
_hdOnoTrfToConNmS :: HsNameS
_tlOallowTrfToCon :: Bool
_tlOaspBindNmMp :: (ACoreBindAspMp NmMp)
_tlOcvarIntroMp :: CVarIntroMp
_tlOintroCVarIntroMp :: CVarIntroMp
_tlOisGlobal :: Bool
_tlOlev :: Int
_tlOnm :: HsName
_tlOnmMp :: NmMp
_tlOnoTrfNmS :: HsNameS
_tlOnoTrfToConNmS :: HsNameS
_hdIbindL :: ([(HsName,CBind)])
_hdIbindNmMp :: NmMp
_hdIbindsIntroCVarIntroMp :: CVarIntroMp
_hdIbindsNoTrfNmS :: HsNameS
_hdIcTrf :: CBound
_hdIcvarIntroExprMp :: CVarIntroMp
_hdIfvS :: FvS
_hdIfvSMp :: FvSMp
_hdIgathAspBindNmMp :: (ACoreBindAspMp NmMp)
_hdIlevOf :: Int
_hdInmL :: ([HsName])
_tlIbindL :: ([(HsName,CBind)])
_tlIbindNmMp :: NmMp
_tlIbindsIntroCVarIntroMp :: CVarIntroMp
_tlIbindsNoTrfNmS :: HsNameS
_tlIcTrf :: CBoundL
_tlIcvarIntroExprMp :: CVarIntroMp
_tlIfvS :: FvS
_tlIfvSMp :: FvSMp
_tlIgathAspBindNmMp :: (ACoreBindAspMp NmMp)
_tlIlevOf :: Int
_tlInmL :: ([HsName])
_lhsObindL =
_hdIbindL ++ _tlIbindL
_lhsObindNmMp =
_hdIbindNmMp `Map.union` _tlIbindNmMp
_lhsObindsIntroCVarIntroMp =
_hdIbindsIntroCVarIntroMp `Map.union` _tlIbindsIntroCVarIntroMp
_lhsObindsNoTrfNmS =
_hdIbindsNoTrfNmS `Set.union` _tlIbindsNoTrfNmS
_lhsOcvarIntroExprMp =
_hdIcvarIntroExprMp `Map.union` _tlIcvarIntroExprMp
_lhsOfvS =
_hdIfvS `Set.union` _tlIfvS
_lhsOfvSMp =
_hdIfvSMp `Map.union` _tlIfvSMp
_lhsOgathAspBindNmMp =
_hdIgathAspBindNmMp `Map.union` _tlIgathAspBindNmMp
_lhsOlevOf =
_hdIlevOf `max` _tlIlevOf
_lhsOnmL =
_hdInmL ++ _tlInmL
_cTrf =
(:) _hdIcTrf _tlIcTrf
_lhsOcTrf =
_cTrf
_hdOallowTrfToCon =
_lhsIallowTrfToCon
_hdOaspBindNmMp =
_lhsIaspBindNmMp
_hdOcvarIntroMp =
_lhsIcvarIntroMp
_hdOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_hdOisGlobal =
_lhsIisGlobal
_hdOlev =
_lhsIlev
_hdOnm =
_lhsInm
_hdOnmMp =
_lhsInmMp
_hdOnoTrfNmS =
_lhsInoTrfNmS
_hdOnoTrfToConNmS =
_lhsInoTrfToConNmS
_tlOallowTrfToCon =
_lhsIallowTrfToCon
_tlOaspBindNmMp =
_lhsIaspBindNmMp
_tlOcvarIntroMp =
_lhsIcvarIntroMp
_tlOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_tlOisGlobal =
_lhsIisGlobal
_tlOlev =
_lhsIlev
_tlOnm =
_lhsInm
_tlOnmMp =
_lhsInmMp
_tlOnoTrfNmS =
_lhsInoTrfNmS
_tlOnoTrfToConNmS =
_lhsInoTrfToConNmS
( _hdIbindL,_hdIbindNmMp,_hdIbindsIntroCVarIntroMp,_hdIbindsNoTrfNmS,_hdIcTrf,_hdIcvarIntroExprMp,_hdIfvS,_hdIfvSMp,_hdIgathAspBindNmMp,_hdIlevOf,_hdInmL) =
hd_ _hdOallowTrfToCon _hdOaspBindNmMp _hdOcvarIntroMp _hdOintroCVarIntroMp _hdOisGlobal _hdOlev _hdOnm _hdOnmMp _hdOnoTrfNmS _hdOnoTrfToConNmS
( _tlIbindL,_tlIbindNmMp,_tlIbindsIntroCVarIntroMp,_tlIbindsNoTrfNmS,_tlIcTrf,_tlIcvarIntroExprMp,_tlIfvS,_tlIfvSMp,_tlIgathAspBindNmMp,_tlIlevOf,_tlInmL) =
tl_ _tlOallowTrfToCon _tlOaspBindNmMp _tlOcvarIntroMp _tlOintroCVarIntroMp _tlOisGlobal _tlOlev _tlOnm _tlOnmMp _tlOnoTrfNmS _tlOnoTrfToConNmS
in ( _lhsObindL,_lhsObindNmMp,_lhsObindsIntroCVarIntroMp,_lhsObindsNoTrfNmS,_lhsOcTrf,_lhsOcvarIntroExprMp,_lhsOfvS,_lhsOfvSMp,_lhsOgathAspBindNmMp,_lhsOlevOf,_lhsOnmL)))
sem_CBoundL_Nil :: T_CBoundL
sem_CBoundL_Nil =
(\ _lhsIallowTrfToCon
_lhsIaspBindNmMp
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIisGlobal
_lhsIlev
_lhsInm
_lhsInmMp
_lhsInoTrfNmS
_lhsInoTrfToConNmS ->
(let _lhsObindL :: ([(HsName,CBind)])
_lhsObindNmMp :: NmMp
_lhsObindsIntroCVarIntroMp :: CVarIntroMp
_lhsObindsNoTrfNmS :: HsNameS
_lhsOcvarIntroExprMp :: CVarIntroMp
_lhsOfvS :: FvS
_lhsOfvSMp :: FvSMp
_lhsOgathAspBindNmMp :: (ACoreBindAspMp NmMp)
_lhsOlevOf :: Int
_lhsOnmL :: ([HsName])
_lhsOcTrf :: CBoundL
_lhsObindL =
[]
_lhsObindNmMp =
Map.empty
_lhsObindsIntroCVarIntroMp =
Map.empty
_lhsObindsNoTrfNmS =
Set.empty
_lhsOcvarIntroExprMp =
Map.empty
_lhsOfvS =
Set.empty
_lhsOfvSMp =
Map.empty
_lhsOgathAspBindNmMp =
Map.empty
_lhsOlevOf =
cLevModule
_lhsOnmL =
[]
_cTrf =
[]
_lhsOcTrf =
_cTrf
in ( _lhsObindL,_lhsObindNmMp,_lhsObindsIntroCVarIntroMp,_lhsObindsNoTrfNmS,_lhsOcTrf,_lhsOcvarIntroExprMp,_lhsOfvS,_lhsOfvSMp,_lhsOgathAspBindNmMp,_lhsOlevOf,_lhsOnmL)))
sem_CDataCon :: CDataCon ->
T_CDataCon
sem_CDataCon (CDataCon_Con _conNm _tagNr _arity) =
(sem_CDataCon_Con _conNm _tagNr _arity)
type T_CDataCon = ( CDataCon)
sem_CDataCon_Con :: HsName ->
Int ->
Int ->
T_CDataCon
sem_CDataCon_Con conNm_ tagNr_ arity_ =
(let _lhsOcTrf :: CDataCon
_cTrf =
CDataCon_Con conNm_ tagNr_ arity_
_lhsOcTrf =
_cTrf
in ( _lhsOcTrf))
sem_CDataConL :: CDataConL ->
T_CDataConL
sem_CDataConL list =
(Prelude.foldr sem_CDataConL_Cons sem_CDataConL_Nil (Prelude.map sem_CDataCon list))
type T_CDataConL = ( CDataConL)
sem_CDataConL_Cons :: T_CDataCon ->
T_CDataConL ->
T_CDataConL
sem_CDataConL_Cons hd_ tl_ =
(let _lhsOcTrf :: CDataConL
_hdIcTrf :: CDataCon
_tlIcTrf :: CDataConL
_cTrf =
(:) _hdIcTrf _tlIcTrf
_lhsOcTrf =
_cTrf
( _hdIcTrf) =
hd_
( _tlIcTrf) =
tl_
in ( _lhsOcTrf))
sem_CDataConL_Nil :: T_CDataConL
sem_CDataConL_Nil =
(let _lhsOcTrf :: CDataConL
_cTrf =
[]
_lhsOcTrf =
_cTrf
in ( _lhsOcTrf))
sem_CDeclMeta :: CDeclMeta ->
T_CDeclMeta
sem_CDeclMeta (CDeclMeta_Data _tyNm _dataCons) =
(sem_CDeclMeta_Data _tyNm (sem_CDataConL _dataCons))
type T_CDeclMeta = ( CDeclMeta)
sem_CDeclMeta_Data :: HsName ->
T_CDataConL ->
T_CDeclMeta
sem_CDeclMeta_Data tyNm_ dataCons_ =
(let _lhsOcTrf :: CDeclMeta
_dataConsIcTrf :: CDataConL
_cTrf =
CDeclMeta_Data tyNm_ _dataConsIcTrf
_lhsOcTrf =
_cTrf
( _dataConsIcTrf) =
dataCons_
in ( _lhsOcTrf))
sem_CDeclMetaL :: CDeclMetaL ->
T_CDeclMetaL
sem_CDeclMetaL list =
(Prelude.foldr sem_CDeclMetaL_Cons sem_CDeclMetaL_Nil (Prelude.map sem_CDeclMeta list))
type T_CDeclMetaL = ( CDeclMetaL)
sem_CDeclMetaL_Cons :: T_CDeclMeta ->
T_CDeclMetaL ->
T_CDeclMetaL
sem_CDeclMetaL_Cons hd_ tl_ =
(let _lhsOcTrf :: CDeclMetaL
_hdIcTrf :: CDeclMeta
_tlIcTrf :: CDeclMetaL
_cTrf =
(:) _hdIcTrf _tlIcTrf
_lhsOcTrf =
_cTrf
( _hdIcTrf) =
hd_
( _tlIcTrf) =
tl_
in ( _lhsOcTrf))
sem_CDeclMetaL_Nil :: T_CDeclMetaL
sem_CDeclMetaL_Nil =
(let _lhsOcTrf :: CDeclMetaL
_cTrf =
[]
_lhsOcTrf =
_cTrf
in ( _lhsOcTrf))
sem_CExport :: CExport ->
T_CExport
sem_CExport (CExport_Export _nm) =
(sem_CExport_Export _nm)
sem_CExport (CExport_ExportData _nm _mbConNmL) =
(sem_CExport_ExportData _nm _mbConNmL)
type T_CExport = ( CExport)
sem_CExport_Export :: HsName ->
T_CExport
sem_CExport_Export nm_ =
(let _lhsOcTrf :: CExport
_cTrf =
CExport_Export nm_
_lhsOcTrf =
_cTrf
in ( _lhsOcTrf))
sem_CExport_ExportData :: HsName ->
(Maybe [HsName]) ->
T_CExport
sem_CExport_ExportData nm_ mbConNmL_ =
(let _lhsOcTrf :: CExport
_cTrf =
CExport_ExportData nm_ mbConNmL_
_lhsOcTrf =
_cTrf
in ( _lhsOcTrf))
sem_CExportL :: CExportL ->
T_CExportL
sem_CExportL list =
(Prelude.foldr sem_CExportL_Cons sem_CExportL_Nil (Prelude.map sem_CExport list))
type T_CExportL = ( CExportL)
sem_CExportL_Cons :: T_CExport ->
T_CExportL ->
T_CExportL
sem_CExportL_Cons hd_ tl_ =
(let _lhsOcTrf :: CExportL
_hdIcTrf :: CExport
_tlIcTrf :: CExportL
_cTrf =
(:) _hdIcTrf _tlIcTrf
_lhsOcTrf =
_cTrf
( _hdIcTrf) =
hd_
( _tlIcTrf) =
tl_
in ( _lhsOcTrf))
sem_CExportL_Nil :: T_CExportL
sem_CExportL_Nil =
(let _lhsOcTrf :: CExportL
_cTrf =
[]
_lhsOcTrf =
_cTrf
in ( _lhsOcTrf))
sem_CExpr :: CExpr ->
T_CExpr
sem_CExpr (CExpr_Var _ref) =
(sem_CExpr_Var _ref)
sem_CExpr (CExpr_Int _int) =
(sem_CExpr_Int _int)
sem_CExpr (CExpr_Char _char) =
(sem_CExpr_Char _char)
sem_CExpr (CExpr_String _str) =
(sem_CExpr_String _str)
sem_CExpr (CExpr_Integer _integer) =
(sem_CExpr_Integer _integer)
sem_CExpr (CExpr_Tup _tag) =
(sem_CExpr_Tup _tag)
sem_CExpr (CExpr_Let _categ _binds _body) =
(sem_CExpr_Let _categ (sem_CBindL _binds) (sem_CExpr _body))
sem_CExpr (CExpr_App _func _arg) =
(sem_CExpr_App (sem_CExpr _func) (sem_CBound _arg))
sem_CExpr (CExpr_Lam _bind _body) =
(sem_CExpr_Lam (sem_CBind _bind) (sem_CExpr _body))
sem_CExpr (CExpr_Case _expr _alts _dflt) =
(sem_CExpr_Case (sem_CExpr _expr) (sem_CAltL _alts) (sem_CExpr _dflt))
sem_CExpr (CExpr_CaseAltFail _failReason _errorExpr) =
(sem_CExpr_CaseAltFail _failReason (sem_CExpr _errorExpr))
sem_CExpr (CExpr_TupDel _expr _tag _nm _offset) =
(sem_CExpr_TupDel (sem_CExpr _expr) _tag _nm (sem_CExpr _offset))
sem_CExpr (CExpr_TupIns _expr _tag _nm _offset _fldExpr) =
(sem_CExpr_TupIns (sem_CExpr _expr) _tag _nm (sem_CExpr _offset) (sem_CExpr _fldExpr))
sem_CExpr (CExpr_TupUpd _expr _tag _nm _offset _fldExpr) =
(sem_CExpr_TupUpd (sem_CExpr _expr) _tag _nm (sem_CExpr _offset) (sem_CExpr _fldExpr))
sem_CExpr (CExpr_FFI _callconv _safety _impEnt _ty) =
(sem_CExpr_FFI _callconv _safety _impEnt _ty)
sem_CExpr (CExpr_Dbg _info) =
(sem_CExpr_Dbg _info)
sem_CExpr (CExpr_Hole _uid) =
(sem_CExpr_Hole _uid)
sem_CExpr (CExpr_HoleLet _bindsUid _body) =
(sem_CExpr_HoleLet _bindsUid (sem_CExpr _body))
sem_CExpr (CExpr_CoeArg) =
(sem_CExpr_CoeArg)
sem_CExpr (CExpr_ImplsApp _func _uid) =
(sem_CExpr_ImplsApp (sem_CExpr _func) _uid)
sem_CExpr (CExpr_ImplsLam _uid _body) =
(sem_CExpr_ImplsLam _uid (sem_CExpr _body))
sem_CExpr (CExpr_Ann _ann _expr) =
(sem_CExpr_Ann (sem_CExprAnn _ann) (sem_CExpr _expr))
type T_CExpr = Bool ->
CVarIntroMp ->
CVarIntroMp ->
Int ->
NmMp ->
HsNameS ->
HsNameS ->
( NmMp,CExpr,FvS,Int,(Maybe CExpr))
sem_CExpr_Var :: ACoreBindRef ->
T_CExpr
sem_CExpr_Var ref_ =
(\ _lhsIallowTrfToCon
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp
_lhsInoTrfNmS
_lhsInoTrfToConNmS ->
(let _lhsOlevOf :: Int
_lhsOfvS :: FvS
_nm :: HsName
_nmAsp :: HsName
_lhsOmbRepl :: (Maybe CExpr)
_lhsOcTrf :: CExpr
_lhsObindNmMp :: NmMp
_lhsOlevOf =
fvLev _nm _lhsIcvarIntroMp
_lhsOfvS =
Set.singleton _nm
_nm =
acbrefNm ref_
_nmAsp =
mkHNm ref_
_lhsOmbRepl =
Just _cTrf
_lhsOcTrf =
maybe _cTrf id $ Map.lookup _nm $ _lhsInmMp
_lhsObindNmMp =
Map.empty
_cTrf =
CExpr_Var ref_
in ( _lhsObindNmMp,_lhsOcTrf,_lhsOfvS,_lhsOlevOf,_lhsOmbRepl)))
sem_CExpr_Int :: Int ->
T_CExpr
sem_CExpr_Int int_ =
(\ _lhsIallowTrfToCon
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp
_lhsInoTrfNmS
_lhsInoTrfToConNmS ->
(let _lhsOmbRepl :: (Maybe CExpr)
_lhsObindNmMp :: NmMp
_lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CExpr
_lhsOmbRepl =
if _lhsIallowTrfToCon
then Just _cTrf
else Nothing
_lhsObindNmMp =
Map.empty
_lhsOfvS =
Set.empty
_lhsOlevOf =
cLevModule
_cTrf =
CExpr_Int int_
_lhsOcTrf =
_cTrf
in ( _lhsObindNmMp,_lhsOcTrf,_lhsOfvS,_lhsOlevOf,_lhsOmbRepl)))
sem_CExpr_Char :: Char ->
T_CExpr
sem_CExpr_Char char_ =
(\ _lhsIallowTrfToCon
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp
_lhsInoTrfNmS
_lhsInoTrfToConNmS ->
(let _lhsOmbRepl :: (Maybe CExpr)
_lhsObindNmMp :: NmMp
_lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CExpr
_lhsOmbRepl =
if _lhsIallowTrfToCon
then Just _cTrf
else Nothing
_lhsObindNmMp =
Map.empty
_lhsOfvS =
Set.empty
_lhsOlevOf =
cLevModule
_cTrf =
CExpr_Char char_
_lhsOcTrf =
_cTrf
in ( _lhsObindNmMp,_lhsOcTrf,_lhsOfvS,_lhsOlevOf,_lhsOmbRepl)))
sem_CExpr_String :: String ->
T_CExpr
sem_CExpr_String str_ =
(\ _lhsIallowTrfToCon
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp
_lhsInoTrfNmS
_lhsInoTrfToConNmS ->
(let _lhsOmbRepl :: (Maybe CExpr)
_lhsObindNmMp :: NmMp
_lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CExpr
_levOf =
cLevIntern
_lhsOmbRepl =
Nothing
_lhsObindNmMp =
Map.empty
_lhsOfvS =
Set.empty
_lhsOlevOf =
_levOf
_cTrf =
CExpr_String str_
_lhsOcTrf =
_cTrf
in ( _lhsObindNmMp,_lhsOcTrf,_lhsOfvS,_lhsOlevOf,_lhsOmbRepl)))
sem_CExpr_Integer :: Integer ->
T_CExpr
sem_CExpr_Integer integer_ =
(\ _lhsIallowTrfToCon
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp
_lhsInoTrfNmS
_lhsInoTrfToConNmS ->
(let _lhsOmbRepl :: (Maybe CExpr)
_lhsObindNmMp :: NmMp
_lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CExpr
_lhsOmbRepl =
Nothing
_lhsObindNmMp =
Map.empty
_lhsOfvS =
Set.empty
_lhsOlevOf =
cLevModule
_cTrf =
CExpr_Integer integer_
_lhsOcTrf =
_cTrf
in ( _lhsObindNmMp,_lhsOcTrf,_lhsOfvS,_lhsOlevOf,_lhsOmbRepl)))
sem_CExpr_Tup :: CTag ->
T_CExpr
sem_CExpr_Tup tag_ =
(\ _lhsIallowTrfToCon
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp
_lhsInoTrfNmS
_lhsInoTrfToConNmS ->
(let _lhsOmbRepl :: (Maybe CExpr)
_lhsObindNmMp :: NmMp
_lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CExpr
_levOf =
cLevModule
_lhsOmbRepl =
Nothing
_lhsObindNmMp =
Map.empty
_lhsOfvS =
Set.empty
_lhsOlevOf =
_levOf
_cTrf =
CExpr_Tup tag_
_lhsOcTrf =
_cTrf
in ( _lhsObindNmMp,_lhsOcTrf,_lhsOfvS,_lhsOlevOf,_lhsOmbRepl)))
sem_CExpr_Let :: CBindCateg ->
T_CBindL ->
T_CExpr ->
T_CExpr
sem_CExpr_Let categ_ binds_ body_ =
(\ _lhsIallowTrfToCon
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp
_lhsInoTrfNmS
_lhsInoTrfToConNmS ->
(let _bindsOcvarIntroMp :: CVarIntroMp
_bodyOcvarIntroMp :: CVarIntroMp
_lhsOmbRepl :: (Maybe CExpr)
_lhsOcTrf :: CExpr
_lhsObindNmMp :: NmMp
_lhsOfvS :: FvS
_lhsOlevOf :: Int
_bindsOallowTrfToCon :: Bool
_bindsOintroCVarIntroMp :: CVarIntroMp
_bindsOisGlobal :: Bool
_bindsOlev :: Int
_bindsOnmMp :: NmMp
_bindsOnoTrfNmS :: HsNameS
_bindsOnoTrfToConNmS :: HsNameS
_bodyOallowTrfToCon :: Bool
_bodyOintroCVarIntroMp :: CVarIntroMp
_bodyOlev :: Int
_bodyOnmMp :: NmMp
_bodyOnoTrfNmS :: HsNameS
_bodyOnoTrfToConNmS :: HsNameS
_bindsIbindL :: ([(HsName,CBind)])
_bindsIbindNmMp :: NmMp
_bindsIbindsIntroCVarIntroMp :: CVarIntroMp
_bindsIbindsNoTrfNmS :: HsNameS
_bindsIcTrf :: CBindL
_bindsIcvarIntroExprMp :: CVarIntroMp
_bindsIfvS :: FvS
_bindsIfvSMp :: FvSMp
_bindsIlevOf :: Int
_bindsInmL :: ([HsName])
_bodyIbindNmMp :: NmMp
_bodyIcTrf :: CExpr
_bodyIfvS :: FvS
_bodyIlevOf :: Int
_bodyImbRepl :: (Maybe CExpr)
_maxBindLev =
fvsLev _lhsIcvarIntroMp cLevModule _bindsIfvS
__tup2 =
case categ_ of
CBindCateg_Strict -> (const _lhsIlev,_lhsIcvarIntroMp)
CBindCateg_Rec -> ( const _maxBindLev
, Map.map (\cvi -> cvi {cviLev = _maxBindLev}) _bindsIcvarIntroExprMp
`Map.union` _lhsIcvarIntroMp
)
_ -> (id,_lhsIcvarIntroMp)
(_strLev,_) =
__tup2
(_,_bindsOcvarIntroMp) =
__tup2
_bodyOcvarIntroMp =
Map.map (\cvi -> cvi {cviLev = _strLev $ cviLev cvi}) _bindsIcvarIntroExprMp `Map.union` _lhsIcvarIntroMp
_introCVarIntroMp =
Map.map (\cvi -> cvi {cviLev = _lhsIlev}) _bindsIbindsIntroCVarIntroMp `Map.union` _lhsIintroCVarIntroMp
_levOf =
fvsLev _lhsIcvarIntroMp cLevModule _fvS
_fvS =
(_bodyIfvS `Set.union` _bindsIfvS) `Set.difference` Set.fromList _bindsInmL
_isGlobal =
_lhsIlev == cLevModule
_allowTrf =
categ_ /= CBindCateg_Strict
&& categ_ /= CBindCateg_FFI
&& categ_ /= CBindCateg_FFE
_allowStrTrf =
categ_ /= CBindCateg_FFI
&& categ_ /= CBindCateg_FFE
_nmMpNew =
Map.foldrWithKey
(\n r m
-> case r of
CExpr_Var ref
| nm `Map.member` _bindsIbindNmMp
-> m
| _allowTrf || (_allowStrTrf && cexprIsEvaluated r')
-> Map.insert n r' m
where nm = acbrefNm ref
r' = maybe r id . Map.lookup nm $ _lhsInmMp
_ | _allowTrf
-> Map.insert n r m
CExpr_Int i
| _allowStrTrf
-> Map.insert n r m
_ -> m
)
Map.empty
_bindsIbindNmMp
_nmMp =
Map.union _nmMpNew $ Map.difference _lhsInmMp _bindsIcvarIntroExprMp
_lhsOmbRepl =
Nothing
_lhsOcTrf =
if Map.null _nmMpNew
then _cTrf
else acoreLet categ_
[ b | (n,b) <- _bindsIbindL
, not (n `Map.member` _nmMpNew)
|| n `Set.member` _bindsIbindsNoTrfNmS
] _bodyIcTrf
_lhsObindNmMp =
_bindsIbindNmMp `Map.union` _bodyIbindNmMp
_lhsOfvS =
_fvS
_lhsOlevOf =
_levOf
_cTrf =
CExpr_Let categ_ _bindsIcTrf _bodyIcTrf
_bindsOallowTrfToCon =
_lhsIallowTrfToCon
_bindsOintroCVarIntroMp =
_introCVarIntroMp
_bindsOisGlobal =
_isGlobal
_bindsOlev =
_lhsIlev
_bindsOnmMp =
_nmMp
_bindsOnoTrfNmS =
_lhsInoTrfNmS
_bindsOnoTrfToConNmS =
_lhsInoTrfToConNmS
_bodyOallowTrfToCon =
_lhsIallowTrfToCon
_bodyOintroCVarIntroMp =
_introCVarIntroMp
_bodyOlev =
_lhsIlev
_bodyOnmMp =
_nmMp
_bodyOnoTrfNmS =
_lhsInoTrfNmS
_bodyOnoTrfToConNmS =
_lhsInoTrfToConNmS
( _bindsIbindL,_bindsIbindNmMp,_bindsIbindsIntroCVarIntroMp,_bindsIbindsNoTrfNmS,_bindsIcTrf,_bindsIcvarIntroExprMp,_bindsIfvS,_bindsIfvSMp,_bindsIlevOf,_bindsInmL) =
binds_ _bindsOallowTrfToCon _bindsOcvarIntroMp _bindsOintroCVarIntroMp _bindsOisGlobal _bindsOlev _bindsOnmMp _bindsOnoTrfNmS _bindsOnoTrfToConNmS
( _bodyIbindNmMp,_bodyIcTrf,_bodyIfvS,_bodyIlevOf,_bodyImbRepl) =
body_ _bodyOallowTrfToCon _bodyOcvarIntroMp _bodyOintroCVarIntroMp _bodyOlev _bodyOnmMp _bodyOnoTrfNmS _bodyOnoTrfToConNmS
in ( _lhsObindNmMp,_lhsOcTrf,_lhsOfvS,_lhsOlevOf,_lhsOmbRepl)))
sem_CExpr_App :: T_CExpr ->
T_CBound ->
T_CExpr
sem_CExpr_App func_ arg_ =
(\ _lhsIallowTrfToCon
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp
_lhsInoTrfNmS
_lhsInoTrfToConNmS ->
(let _argOnm :: HsName
_lhsOmbRepl :: (Maybe CExpr)
_argOaspBindNmMp :: (ACoreBindAspMp NmMp)
_lhsObindNmMp :: NmMp
_lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CExpr
_funcOallowTrfToCon :: Bool
_funcOcvarIntroMp :: CVarIntroMp
_funcOintroCVarIntroMp :: CVarIntroMp
_funcOlev :: Int
_funcOnmMp :: NmMp
_funcOnoTrfNmS :: HsNameS
_funcOnoTrfToConNmS :: HsNameS
_argOallowTrfToCon :: Bool
_argOcvarIntroMp :: CVarIntroMp
_argOintroCVarIntroMp :: CVarIntroMp
_argOisGlobal :: Bool
_argOlev :: Int
_argOnmMp :: NmMp
_argOnoTrfNmS :: HsNameS
_argOnoTrfToConNmS :: HsNameS
_funcIbindNmMp :: NmMp
_funcIcTrf :: CExpr
_funcIfvS :: FvS
_funcIlevOf :: Int
_funcImbRepl :: (Maybe CExpr)
_argIbindL :: ([(HsName,CBind)])
_argIbindNmMp :: NmMp
_argIbindsIntroCVarIntroMp :: CVarIntroMp
_argIbindsNoTrfNmS :: HsNameS
_argIcTrf :: CBound
_argIcvarIntroExprMp :: CVarIntroMp
_argIfvS :: FvS
_argIfvSMp :: FvSMp
_argIgathAspBindNmMp :: (ACoreBindAspMp NmMp)
_argIlevOf :: Int
_argInmL :: ([HsName])
_levOf =
_funcIlevOf `max` _argIlevOf
_fvS =
_funcIfvS `Set.union` _argIfvS
_argOnm =
hsnUnknown
_isGlobal =
False
_lhsOmbRepl =
Nothing
_argOaspBindNmMp =
Map.empty
_lhsObindNmMp =
_funcIbindNmMp `Map.union` _argIbindNmMp
_lhsOfvS =
_fvS
_lhsOlevOf =
_levOf
_cTrf =
CExpr_App _funcIcTrf _argIcTrf
_lhsOcTrf =
_cTrf
_funcOallowTrfToCon =
_lhsIallowTrfToCon
_funcOcvarIntroMp =
_lhsIcvarIntroMp
_funcOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_funcOlev =
_lhsIlev
_funcOnmMp =
_lhsInmMp
_funcOnoTrfNmS =
_lhsInoTrfNmS
_funcOnoTrfToConNmS =
_lhsInoTrfToConNmS
_argOallowTrfToCon =
_lhsIallowTrfToCon
_argOcvarIntroMp =
_lhsIcvarIntroMp
_argOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_argOisGlobal =
_isGlobal
_argOlev =
_lhsIlev
_argOnmMp =
_lhsInmMp
_argOnoTrfNmS =
_lhsInoTrfNmS
_argOnoTrfToConNmS =
_lhsInoTrfToConNmS
( _funcIbindNmMp,_funcIcTrf,_funcIfvS,_funcIlevOf,_funcImbRepl) =
func_ _funcOallowTrfToCon _funcOcvarIntroMp _funcOintroCVarIntroMp _funcOlev _funcOnmMp _funcOnoTrfNmS _funcOnoTrfToConNmS
( _argIbindL,_argIbindNmMp,_argIbindsIntroCVarIntroMp,_argIbindsNoTrfNmS,_argIcTrf,_argIcvarIntroExprMp,_argIfvS,_argIfvSMp,_argIgathAspBindNmMp,_argIlevOf,_argInmL) =
arg_ _argOallowTrfToCon _argOaspBindNmMp _argOcvarIntroMp _argOintroCVarIntroMp _argOisGlobal _argOlev _argOnm _argOnmMp _argOnoTrfNmS _argOnoTrfToConNmS
in ( _lhsObindNmMp,_lhsOcTrf,_lhsOfvS,_lhsOlevOf,_lhsOmbRepl)))
sem_CExpr_Lam :: T_CBind ->
T_CExpr ->
T_CExpr
sem_CExpr_Lam bind_ body_ =
(\ _lhsIallowTrfToCon
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp
_lhsInoTrfNmS
_lhsInoTrfToConNmS ->
(let _bodyOcvarIntroMp :: CVarIntroMp
_bodyOintroCVarIntroMp :: CVarIntroMp
_bodyOnmMp :: NmMp
_lhsOmbRepl :: (Maybe CExpr)
_lhsObindNmMp :: NmMp
_lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CExpr
_bindOallowTrfToCon :: Bool
_bindOcvarIntroMp :: CVarIntroMp
_bindOintroCVarIntroMp :: CVarIntroMp
_bindOisGlobal :: Bool
_bindOlev :: Int
_bindOnmMp :: NmMp
_bindOnoTrfNmS :: HsNameS
_bindOnoTrfToConNmS :: HsNameS
_bodyOallowTrfToCon :: Bool
_bodyOlev :: Int
_bodyOnoTrfNmS :: HsNameS
_bodyOnoTrfToConNmS :: HsNameS
_bindIbindL :: ([(HsName,CBind)])
_bindIbindNmMp :: NmMp
_bindIbindsIntroCVarIntroMp :: CVarIntroMp
_bindIbindsNoTrfNmS :: HsNameS
_bindIcTrf :: CBind
_bindIcvarIntroExprMp :: CVarIntroMp
_bindIfvS :: FvS
_bindIfvSMp :: FvSMp
_bindIlevOf :: Int
_bindInm :: HsName
_bindInmL :: ([HsName])
_bodyIbindNmMp :: NmMp
_bodyIcTrf :: CExpr
_bodyIfvS :: FvS
_bodyIlevOf :: Int
_bodyImbRepl :: (Maybe CExpr)
_cvi =
CVarIntro
{ cviLev = _lev
, cviMeta = CMetaVal_Val
}
_bodyOcvarIntroMp =
Map.insert _argNm _cvi _lhsIcvarIntroMp
_bodyOintroCVarIntroMp =
Map.insert _argNm _cvi _lhsIintroCVarIntroMp
_levOf =
fvsLev _lhsIcvarIntroMp cLevModule _bodyIfvS
_fvS =
_argNm `Set.delete` _bodyIfvS
_argNm =
_bindInm
_lev =
_lhsIlev + 1
_isGlobal =
False
_bodyOnmMp =
Map.delete _argNm _lhsInmMp
_lhsOmbRepl =
Nothing
_lhsObindNmMp =
_bindIbindNmMp `Map.union` _bodyIbindNmMp
_lhsOfvS =
_fvS
_lhsOlevOf =
_levOf
_cTrf =
CExpr_Lam _bindIcTrf _bodyIcTrf
_lhsOcTrf =
_cTrf
_bindOallowTrfToCon =
_lhsIallowTrfToCon
_bindOcvarIntroMp =
_lhsIcvarIntroMp
_bindOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_bindOisGlobal =
_isGlobal
_bindOlev =
_lev
_bindOnmMp =
_lhsInmMp
_bindOnoTrfNmS =
_lhsInoTrfNmS
_bindOnoTrfToConNmS =
_lhsInoTrfToConNmS
_bodyOallowTrfToCon =
_lhsIallowTrfToCon
_bodyOlev =
_lev
_bodyOnoTrfNmS =
_lhsInoTrfNmS
_bodyOnoTrfToConNmS =
_lhsInoTrfToConNmS
( _bindIbindL,_bindIbindNmMp,_bindIbindsIntroCVarIntroMp,_bindIbindsNoTrfNmS,_bindIcTrf,_bindIcvarIntroExprMp,_bindIfvS,_bindIfvSMp,_bindIlevOf,_bindInm,_bindInmL) =
bind_ _bindOallowTrfToCon _bindOcvarIntroMp _bindOintroCVarIntroMp _bindOisGlobal _bindOlev _bindOnmMp _bindOnoTrfNmS _bindOnoTrfToConNmS
( _bodyIbindNmMp,_bodyIcTrf,_bodyIfvS,_bodyIlevOf,_bodyImbRepl) =
body_ _bodyOallowTrfToCon _bodyOcvarIntroMp _bodyOintroCVarIntroMp _bodyOlev _bodyOnmMp _bodyOnoTrfNmS _bodyOnoTrfToConNmS
in ( _lhsObindNmMp,_lhsOcTrf,_lhsOfvS,_lhsOlevOf,_lhsOmbRepl)))
sem_CExpr_Case :: T_CExpr ->
T_CAltL ->
T_CExpr ->
T_CExpr
sem_CExpr_Case expr_ alts_ dflt_ =
(\ _lhsIallowTrfToCon
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp
_lhsInoTrfNmS
_lhsInoTrfToConNmS ->
(let _lhsOmbRepl :: (Maybe CExpr)
_lhsObindNmMp :: NmMp
_lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CExpr
_exprOallowTrfToCon :: Bool
_exprOcvarIntroMp :: CVarIntroMp
_exprOintroCVarIntroMp :: CVarIntroMp
_exprOlev :: Int
_exprOnmMp :: NmMp
_exprOnoTrfNmS :: HsNameS
_exprOnoTrfToConNmS :: HsNameS
_altsOallowTrfToCon :: Bool
_altsOcvarIntroMp :: CVarIntroMp
_altsOintroCVarIntroMp :: CVarIntroMp
_altsOlev :: Int
_altsOnmMp :: NmMp
_altsOnoTrfToConNmS :: HsNameS
_dfltOallowTrfToCon :: Bool
_dfltOcvarIntroMp :: CVarIntroMp
_dfltOintroCVarIntroMp :: CVarIntroMp
_dfltOlev :: Int
_dfltOnmMp :: NmMp
_dfltOnoTrfNmS :: HsNameS
_dfltOnoTrfToConNmS :: HsNameS
_exprIbindNmMp :: NmMp
_exprIcTrf :: CExpr
_exprIfvS :: FvS
_exprIlevOf :: Int
_exprImbRepl :: (Maybe CExpr)
_altsIcTrf :: CAltL
_altsIfvS :: FvS
_altsIlevOf :: Int
_dfltIbindNmMp :: NmMp
_dfltIcTrf :: CExpr
_dfltIfvS :: FvS
_dfltIlevOf :: Int
_dfltImbRepl :: (Maybe CExpr)
_levOf =
_exprIlevOf `max` _altsIlevOf `max` _dfltIlevOf
_lhsOmbRepl =
Nothing
_lhsObindNmMp =
_exprIbindNmMp `Map.union` _dfltIbindNmMp
_lhsOfvS =
_exprIfvS `Set.union` _altsIfvS `Set.union` _dfltIfvS
_lhsOlevOf =
_levOf
_cTrf =
CExpr_Case _exprIcTrf _altsIcTrf _dfltIcTrf
_lhsOcTrf =
_cTrf
_exprOallowTrfToCon =
_lhsIallowTrfToCon
_exprOcvarIntroMp =
_lhsIcvarIntroMp
_exprOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_exprOlev =
_lhsIlev
_exprOnmMp =
_lhsInmMp
_exprOnoTrfNmS =
_lhsInoTrfNmS
_exprOnoTrfToConNmS =
_lhsInoTrfToConNmS
_altsOallowTrfToCon =
_lhsIallowTrfToCon
_altsOcvarIntroMp =
_lhsIcvarIntroMp
_altsOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_altsOlev =
_lhsIlev
_altsOnmMp =
_lhsInmMp
_altsOnoTrfToConNmS =
_lhsInoTrfToConNmS
_dfltOallowTrfToCon =
_lhsIallowTrfToCon
_dfltOcvarIntroMp =
_lhsIcvarIntroMp
_dfltOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_dfltOlev =
_lhsIlev
_dfltOnmMp =
_lhsInmMp
_dfltOnoTrfNmS =
_lhsInoTrfNmS
_dfltOnoTrfToConNmS =
_lhsInoTrfToConNmS
( _exprIbindNmMp,_exprIcTrf,_exprIfvS,_exprIlevOf,_exprImbRepl) =
expr_ _exprOallowTrfToCon _exprOcvarIntroMp _exprOintroCVarIntroMp _exprOlev _exprOnmMp _exprOnoTrfNmS _exprOnoTrfToConNmS
( _altsIcTrf,_altsIfvS,_altsIlevOf) =
alts_ _altsOallowTrfToCon _altsOcvarIntroMp _altsOintroCVarIntroMp _altsOlev _altsOnmMp _altsOnoTrfToConNmS
( _dfltIbindNmMp,_dfltIcTrf,_dfltIfvS,_dfltIlevOf,_dfltImbRepl) =
dflt_ _dfltOallowTrfToCon _dfltOcvarIntroMp _dfltOintroCVarIntroMp _dfltOlev _dfltOnmMp _dfltOnoTrfNmS _dfltOnoTrfToConNmS
in ( _lhsObindNmMp,_lhsOcTrf,_lhsOfvS,_lhsOlevOf,_lhsOmbRepl)))
sem_CExpr_CaseAltFail :: CaseAltFailReason ->
T_CExpr ->
T_CExpr
sem_CExpr_CaseAltFail failReason_ errorExpr_ =
(\ _lhsIallowTrfToCon
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp
_lhsInoTrfNmS
_lhsInoTrfToConNmS ->
(let _lhsOmbRepl :: (Maybe CExpr)
_lhsObindNmMp :: NmMp
_lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CExpr
_errorExprOallowTrfToCon :: Bool
_errorExprOcvarIntroMp :: CVarIntroMp
_errorExprOintroCVarIntroMp :: CVarIntroMp
_errorExprOlev :: Int
_errorExprOnmMp :: NmMp
_errorExprOnoTrfNmS :: HsNameS
_errorExprOnoTrfToConNmS :: HsNameS
_errorExprIbindNmMp :: NmMp
_errorExprIcTrf :: CExpr
_errorExprIfvS :: FvS
_errorExprIlevOf :: Int
_errorExprImbRepl :: (Maybe CExpr)
_lhsOmbRepl =
Nothing
_lhsObindNmMp =
_errorExprIbindNmMp
_lhsOfvS =
_errorExprIfvS
_lhsOlevOf =
_errorExprIlevOf
_cTrf =
CExpr_CaseAltFail failReason_ _errorExprIcTrf
_lhsOcTrf =
_cTrf
_errorExprOallowTrfToCon =
_lhsIallowTrfToCon
_errorExprOcvarIntroMp =
_lhsIcvarIntroMp
_errorExprOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_errorExprOlev =
_lhsIlev
_errorExprOnmMp =
_lhsInmMp
_errorExprOnoTrfNmS =
_lhsInoTrfNmS
_errorExprOnoTrfToConNmS =
_lhsInoTrfToConNmS
( _errorExprIbindNmMp,_errorExprIcTrf,_errorExprIfvS,_errorExprIlevOf,_errorExprImbRepl) =
errorExpr_ _errorExprOallowTrfToCon _errorExprOcvarIntroMp _errorExprOintroCVarIntroMp _errorExprOlev _errorExprOnmMp _errorExprOnoTrfNmS _errorExprOnoTrfToConNmS
in ( _lhsObindNmMp,_lhsOcTrf,_lhsOfvS,_lhsOlevOf,_lhsOmbRepl)))
sem_CExpr_TupDel :: T_CExpr ->
CTag ->
HsName ->
T_CExpr ->
T_CExpr
sem_CExpr_TupDel expr_ tag_ nm_ offset_ =
(\ _lhsIallowTrfToCon
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp
_lhsInoTrfNmS
_lhsInoTrfToConNmS ->
(let _lhsOmbRepl :: (Maybe CExpr)
_lhsObindNmMp :: NmMp
_lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CExpr
_exprOallowTrfToCon :: Bool
_exprOcvarIntroMp :: CVarIntroMp
_exprOintroCVarIntroMp :: CVarIntroMp
_exprOlev :: Int
_exprOnmMp :: NmMp
_exprOnoTrfNmS :: HsNameS
_exprOnoTrfToConNmS :: HsNameS
_offsetOallowTrfToCon :: Bool
_offsetOcvarIntroMp :: CVarIntroMp
_offsetOintroCVarIntroMp :: CVarIntroMp
_offsetOlev :: Int
_offsetOnmMp :: NmMp
_offsetOnoTrfNmS :: HsNameS
_offsetOnoTrfToConNmS :: HsNameS
_exprIbindNmMp :: NmMp
_exprIcTrf :: CExpr
_exprIfvS :: FvS
_exprIlevOf :: Int
_exprImbRepl :: (Maybe CExpr)
_offsetIbindNmMp :: NmMp
_offsetIcTrf :: CExpr
_offsetIfvS :: FvS
_offsetIlevOf :: Int
_offsetImbRepl :: (Maybe CExpr)
_levOf =
_exprIlevOf `max` _offsetIlevOf
_lhsOmbRepl =
Nothing
_lhsObindNmMp =
_exprIbindNmMp `Map.union` _offsetIbindNmMp
_lhsOfvS =
_exprIfvS `Set.union` _offsetIfvS
_lhsOlevOf =
_levOf
_cTrf =
CExpr_TupDel _exprIcTrf tag_ nm_ _offsetIcTrf
_lhsOcTrf =
_cTrf
_exprOallowTrfToCon =
_lhsIallowTrfToCon
_exprOcvarIntroMp =
_lhsIcvarIntroMp
_exprOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_exprOlev =
_lhsIlev
_exprOnmMp =
_lhsInmMp
_exprOnoTrfNmS =
_lhsInoTrfNmS
_exprOnoTrfToConNmS =
_lhsInoTrfToConNmS
_offsetOallowTrfToCon =
_lhsIallowTrfToCon
_offsetOcvarIntroMp =
_lhsIcvarIntroMp
_offsetOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_offsetOlev =
_lhsIlev
_offsetOnmMp =
_lhsInmMp
_offsetOnoTrfNmS =
_lhsInoTrfNmS
_offsetOnoTrfToConNmS =
_lhsInoTrfToConNmS
( _exprIbindNmMp,_exprIcTrf,_exprIfvS,_exprIlevOf,_exprImbRepl) =
expr_ _exprOallowTrfToCon _exprOcvarIntroMp _exprOintroCVarIntroMp _exprOlev _exprOnmMp _exprOnoTrfNmS _exprOnoTrfToConNmS
( _offsetIbindNmMp,_offsetIcTrf,_offsetIfvS,_offsetIlevOf,_offsetImbRepl) =
offset_ _offsetOallowTrfToCon _offsetOcvarIntroMp _offsetOintroCVarIntroMp _offsetOlev _offsetOnmMp _offsetOnoTrfNmS _offsetOnoTrfToConNmS
in ( _lhsObindNmMp,_lhsOcTrf,_lhsOfvS,_lhsOlevOf,_lhsOmbRepl)))
sem_CExpr_TupIns :: T_CExpr ->
CTag ->
HsName ->
T_CExpr ->
T_CExpr ->
T_CExpr
sem_CExpr_TupIns expr_ tag_ nm_ offset_ fldExpr_ =
(\ _lhsIallowTrfToCon
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp
_lhsInoTrfNmS
_lhsInoTrfToConNmS ->
(let _lhsOmbRepl :: (Maybe CExpr)
_lhsObindNmMp :: NmMp
_lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CExpr
_exprOallowTrfToCon :: Bool
_exprOcvarIntroMp :: CVarIntroMp
_exprOintroCVarIntroMp :: CVarIntroMp
_exprOlev :: Int
_exprOnmMp :: NmMp
_exprOnoTrfNmS :: HsNameS
_exprOnoTrfToConNmS :: HsNameS
_offsetOallowTrfToCon :: Bool
_offsetOcvarIntroMp :: CVarIntroMp
_offsetOintroCVarIntroMp :: CVarIntroMp
_offsetOlev :: Int
_offsetOnmMp :: NmMp
_offsetOnoTrfNmS :: HsNameS
_offsetOnoTrfToConNmS :: HsNameS
_fldExprOallowTrfToCon :: Bool
_fldExprOcvarIntroMp :: CVarIntroMp
_fldExprOintroCVarIntroMp :: CVarIntroMp
_fldExprOlev :: Int
_fldExprOnmMp :: NmMp
_fldExprOnoTrfNmS :: HsNameS
_fldExprOnoTrfToConNmS :: HsNameS
_exprIbindNmMp :: NmMp
_exprIcTrf :: CExpr
_exprIfvS :: FvS
_exprIlevOf :: Int
_exprImbRepl :: (Maybe CExpr)
_offsetIbindNmMp :: NmMp
_offsetIcTrf :: CExpr
_offsetIfvS :: FvS
_offsetIlevOf :: Int
_offsetImbRepl :: (Maybe CExpr)
_fldExprIbindNmMp :: NmMp
_fldExprIcTrf :: CExpr
_fldExprIfvS :: FvS
_fldExprIlevOf :: Int
_fldExprImbRepl :: (Maybe CExpr)
_levOf =
_exprIlevOf `max` _offsetIlevOf `max` _fldExprIlevOf
_lhsOmbRepl =
Nothing
_lhsObindNmMp =
_exprIbindNmMp `Map.union` _offsetIbindNmMp `Map.union` _fldExprIbindNmMp
_lhsOfvS =
_exprIfvS `Set.union` _offsetIfvS `Set.union` _fldExprIfvS
_lhsOlevOf =
_levOf
_cTrf =
CExpr_TupIns _exprIcTrf tag_ nm_ _offsetIcTrf _fldExprIcTrf
_lhsOcTrf =
_cTrf
_exprOallowTrfToCon =
_lhsIallowTrfToCon
_exprOcvarIntroMp =
_lhsIcvarIntroMp
_exprOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_exprOlev =
_lhsIlev
_exprOnmMp =
_lhsInmMp
_exprOnoTrfNmS =
_lhsInoTrfNmS
_exprOnoTrfToConNmS =
_lhsInoTrfToConNmS
_offsetOallowTrfToCon =
_lhsIallowTrfToCon
_offsetOcvarIntroMp =
_lhsIcvarIntroMp
_offsetOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_offsetOlev =
_lhsIlev
_offsetOnmMp =
_lhsInmMp
_offsetOnoTrfNmS =
_lhsInoTrfNmS
_offsetOnoTrfToConNmS =
_lhsInoTrfToConNmS
_fldExprOallowTrfToCon =
_lhsIallowTrfToCon
_fldExprOcvarIntroMp =
_lhsIcvarIntroMp
_fldExprOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_fldExprOlev =
_lhsIlev
_fldExprOnmMp =
_lhsInmMp
_fldExprOnoTrfNmS =
_lhsInoTrfNmS
_fldExprOnoTrfToConNmS =
_lhsInoTrfToConNmS
( _exprIbindNmMp,_exprIcTrf,_exprIfvS,_exprIlevOf,_exprImbRepl) =
expr_ _exprOallowTrfToCon _exprOcvarIntroMp _exprOintroCVarIntroMp _exprOlev _exprOnmMp _exprOnoTrfNmS _exprOnoTrfToConNmS
( _offsetIbindNmMp,_offsetIcTrf,_offsetIfvS,_offsetIlevOf,_offsetImbRepl) =
offset_ _offsetOallowTrfToCon _offsetOcvarIntroMp _offsetOintroCVarIntroMp _offsetOlev _offsetOnmMp _offsetOnoTrfNmS _offsetOnoTrfToConNmS
( _fldExprIbindNmMp,_fldExprIcTrf,_fldExprIfvS,_fldExprIlevOf,_fldExprImbRepl) =
fldExpr_ _fldExprOallowTrfToCon _fldExprOcvarIntroMp _fldExprOintroCVarIntroMp _fldExprOlev _fldExprOnmMp _fldExprOnoTrfNmS _fldExprOnoTrfToConNmS
in ( _lhsObindNmMp,_lhsOcTrf,_lhsOfvS,_lhsOlevOf,_lhsOmbRepl)))
sem_CExpr_TupUpd :: T_CExpr ->
CTag ->
HsName ->
T_CExpr ->
T_CExpr ->
T_CExpr
sem_CExpr_TupUpd expr_ tag_ nm_ offset_ fldExpr_ =
(\ _lhsIallowTrfToCon
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp
_lhsInoTrfNmS
_lhsInoTrfToConNmS ->
(let _lhsOmbRepl :: (Maybe CExpr)
_lhsObindNmMp :: NmMp
_lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CExpr
_exprOallowTrfToCon :: Bool
_exprOcvarIntroMp :: CVarIntroMp
_exprOintroCVarIntroMp :: CVarIntroMp
_exprOlev :: Int
_exprOnmMp :: NmMp
_exprOnoTrfNmS :: HsNameS
_exprOnoTrfToConNmS :: HsNameS
_offsetOallowTrfToCon :: Bool
_offsetOcvarIntroMp :: CVarIntroMp
_offsetOintroCVarIntroMp :: CVarIntroMp
_offsetOlev :: Int
_offsetOnmMp :: NmMp
_offsetOnoTrfNmS :: HsNameS
_offsetOnoTrfToConNmS :: HsNameS
_fldExprOallowTrfToCon :: Bool
_fldExprOcvarIntroMp :: CVarIntroMp
_fldExprOintroCVarIntroMp :: CVarIntroMp
_fldExprOlev :: Int
_fldExprOnmMp :: NmMp
_fldExprOnoTrfNmS :: HsNameS
_fldExprOnoTrfToConNmS :: HsNameS
_exprIbindNmMp :: NmMp
_exprIcTrf :: CExpr
_exprIfvS :: FvS
_exprIlevOf :: Int
_exprImbRepl :: (Maybe CExpr)
_offsetIbindNmMp :: NmMp
_offsetIcTrf :: CExpr
_offsetIfvS :: FvS
_offsetIlevOf :: Int
_offsetImbRepl :: (Maybe CExpr)
_fldExprIbindNmMp :: NmMp
_fldExprIcTrf :: CExpr
_fldExprIfvS :: FvS
_fldExprIlevOf :: Int
_fldExprImbRepl :: (Maybe CExpr)
_levOf =
_exprIlevOf `max` _offsetIlevOf `max` _fldExprIlevOf
_lhsOmbRepl =
Nothing
_lhsObindNmMp =
_exprIbindNmMp `Map.union` _offsetIbindNmMp `Map.union` _fldExprIbindNmMp
_lhsOfvS =
_exprIfvS `Set.union` _offsetIfvS `Set.union` _fldExprIfvS
_lhsOlevOf =
_levOf
_cTrf =
CExpr_TupUpd _exprIcTrf tag_ nm_ _offsetIcTrf _fldExprIcTrf
_lhsOcTrf =
_cTrf
_exprOallowTrfToCon =
_lhsIallowTrfToCon
_exprOcvarIntroMp =
_lhsIcvarIntroMp
_exprOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_exprOlev =
_lhsIlev
_exprOnmMp =
_lhsInmMp
_exprOnoTrfNmS =
_lhsInoTrfNmS
_exprOnoTrfToConNmS =
_lhsInoTrfToConNmS
_offsetOallowTrfToCon =
_lhsIallowTrfToCon
_offsetOcvarIntroMp =
_lhsIcvarIntroMp
_offsetOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_offsetOlev =
_lhsIlev
_offsetOnmMp =
_lhsInmMp
_offsetOnoTrfNmS =
_lhsInoTrfNmS
_offsetOnoTrfToConNmS =
_lhsInoTrfToConNmS
_fldExprOallowTrfToCon =
_lhsIallowTrfToCon
_fldExprOcvarIntroMp =
_lhsIcvarIntroMp
_fldExprOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_fldExprOlev =
_lhsIlev
_fldExprOnmMp =
_lhsInmMp
_fldExprOnoTrfNmS =
_lhsInoTrfNmS
_fldExprOnoTrfToConNmS =
_lhsInoTrfToConNmS
( _exprIbindNmMp,_exprIcTrf,_exprIfvS,_exprIlevOf,_exprImbRepl) =
expr_ _exprOallowTrfToCon _exprOcvarIntroMp _exprOintroCVarIntroMp _exprOlev _exprOnmMp _exprOnoTrfNmS _exprOnoTrfToConNmS
( _offsetIbindNmMp,_offsetIcTrf,_offsetIfvS,_offsetIlevOf,_offsetImbRepl) =
offset_ _offsetOallowTrfToCon _offsetOcvarIntroMp _offsetOintroCVarIntroMp _offsetOlev _offsetOnmMp _offsetOnoTrfNmS _offsetOnoTrfToConNmS
( _fldExprIbindNmMp,_fldExprIcTrf,_fldExprIfvS,_fldExprIlevOf,_fldExprImbRepl) =
fldExpr_ _fldExprOallowTrfToCon _fldExprOcvarIntroMp _fldExprOintroCVarIntroMp _fldExprOlev _fldExprOnmMp _fldExprOnoTrfNmS _fldExprOnoTrfToConNmS
in ( _lhsObindNmMp,_lhsOcTrf,_lhsOfvS,_lhsOlevOf,_lhsOmbRepl)))
sem_CExpr_FFI :: FFIWay ->
String ->
ForeignEnt ->
Ty ->
T_CExpr
sem_CExpr_FFI callconv_ safety_ impEnt_ ty_ =
(\ _lhsIallowTrfToCon
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp
_lhsInoTrfNmS
_lhsInoTrfToConNmS ->
(let _lhsOmbRepl :: (Maybe CExpr)
_lhsObindNmMp :: NmMp
_lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CExpr
_lhsOmbRepl =
Nothing
_lhsObindNmMp =
Map.empty
_lhsOfvS =
Set.empty
_lhsOlevOf =
cLevModule
_cTrf =
CExpr_FFI callconv_ safety_ impEnt_ ty_
_lhsOcTrf =
_cTrf
in ( _lhsObindNmMp,_lhsOcTrf,_lhsOfvS,_lhsOlevOf,_lhsOmbRepl)))
sem_CExpr_Dbg :: String ->
T_CExpr
sem_CExpr_Dbg info_ =
(\ _lhsIallowTrfToCon
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp
_lhsInoTrfNmS
_lhsInoTrfToConNmS ->
(let _lhsOmbRepl :: (Maybe CExpr)
_lhsObindNmMp :: NmMp
_lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CExpr
_lhsOmbRepl =
Nothing
_lhsObindNmMp =
Map.empty
_lhsOfvS =
Set.empty
_lhsOlevOf =
cLevModule
_cTrf =
CExpr_Dbg info_
_lhsOcTrf =
_cTrf
in ( _lhsObindNmMp,_lhsOcTrf,_lhsOfvS,_lhsOlevOf,_lhsOmbRepl)))
sem_CExpr_Hole :: UID ->
T_CExpr
sem_CExpr_Hole uid_ =
(\ _lhsIallowTrfToCon
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp
_lhsInoTrfNmS
_lhsInoTrfToConNmS ->
(let _lhsOmbRepl :: (Maybe CExpr)
_lhsObindNmMp :: NmMp
_lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CExpr
_lhsOmbRepl =
Nothing
_lhsObindNmMp =
Map.empty
_lhsOfvS =
Set.empty
_lhsOlevOf =
cLevModule
_cTrf =
CExpr_Hole uid_
_lhsOcTrf =
_cTrf
in ( _lhsObindNmMp,_lhsOcTrf,_lhsOfvS,_lhsOlevOf,_lhsOmbRepl)))
sem_CExpr_HoleLet :: UID ->
T_CExpr ->
T_CExpr
sem_CExpr_HoleLet bindsUid_ body_ =
(\ _lhsIallowTrfToCon
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp
_lhsInoTrfNmS
_lhsInoTrfToConNmS ->
(let _lhsOmbRepl :: (Maybe CExpr)
_lhsObindNmMp :: NmMp
_lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CExpr
_bodyOallowTrfToCon :: Bool
_bodyOcvarIntroMp :: CVarIntroMp
_bodyOintroCVarIntroMp :: CVarIntroMp
_bodyOlev :: Int
_bodyOnmMp :: NmMp
_bodyOnoTrfNmS :: HsNameS
_bodyOnoTrfToConNmS :: HsNameS
_bodyIbindNmMp :: NmMp
_bodyIcTrf :: CExpr
_bodyIfvS :: FvS
_bodyIlevOf :: Int
_bodyImbRepl :: (Maybe CExpr)
_lhsOmbRepl =
Nothing
_lhsObindNmMp =
_bodyIbindNmMp
_lhsOfvS =
_bodyIfvS
_lhsOlevOf =
_bodyIlevOf
_cTrf =
CExpr_HoleLet bindsUid_ _bodyIcTrf
_lhsOcTrf =
_cTrf
_bodyOallowTrfToCon =
_lhsIallowTrfToCon
_bodyOcvarIntroMp =
_lhsIcvarIntroMp
_bodyOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_bodyOlev =
_lhsIlev
_bodyOnmMp =
_lhsInmMp
_bodyOnoTrfNmS =
_lhsInoTrfNmS
_bodyOnoTrfToConNmS =
_lhsInoTrfToConNmS
( _bodyIbindNmMp,_bodyIcTrf,_bodyIfvS,_bodyIlevOf,_bodyImbRepl) =
body_ _bodyOallowTrfToCon _bodyOcvarIntroMp _bodyOintroCVarIntroMp _bodyOlev _bodyOnmMp _bodyOnoTrfNmS _bodyOnoTrfToConNmS
in ( _lhsObindNmMp,_lhsOcTrf,_lhsOfvS,_lhsOlevOf,_lhsOmbRepl)))
sem_CExpr_CoeArg :: T_CExpr
sem_CExpr_CoeArg =
(\ _lhsIallowTrfToCon
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp
_lhsInoTrfNmS
_lhsInoTrfToConNmS ->
(let _lhsOmbRepl :: (Maybe CExpr)
_lhsObindNmMp :: NmMp
_lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CExpr
_lhsOmbRepl =
Nothing
_lhsObindNmMp =
Map.empty
_lhsOfvS =
Set.empty
_lhsOlevOf =
cLevModule
_cTrf =
CExpr_CoeArg
_lhsOcTrf =
_cTrf
in ( _lhsObindNmMp,_lhsOcTrf,_lhsOfvS,_lhsOlevOf,_lhsOmbRepl)))
sem_CExpr_ImplsApp :: T_CExpr ->
ImplsVarId ->
T_CExpr
sem_CExpr_ImplsApp func_ uid_ =
(\ _lhsIallowTrfToCon
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp
_lhsInoTrfNmS
_lhsInoTrfToConNmS ->
(let _lhsOmbRepl :: (Maybe CExpr)
_lhsObindNmMp :: NmMp
_lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CExpr
_funcOallowTrfToCon :: Bool
_funcOcvarIntroMp :: CVarIntroMp
_funcOintroCVarIntroMp :: CVarIntroMp
_funcOlev :: Int
_funcOnmMp :: NmMp
_funcOnoTrfNmS :: HsNameS
_funcOnoTrfToConNmS :: HsNameS
_funcIbindNmMp :: NmMp
_funcIcTrf :: CExpr
_funcIfvS :: FvS
_funcIlevOf :: Int
_funcImbRepl :: (Maybe CExpr)
_lhsOmbRepl =
Nothing
_lhsObindNmMp =
_funcIbindNmMp
_lhsOfvS =
_funcIfvS
_lhsOlevOf =
_funcIlevOf
_cTrf =
CExpr_ImplsApp _funcIcTrf uid_
_lhsOcTrf =
_cTrf
_funcOallowTrfToCon =
_lhsIallowTrfToCon
_funcOcvarIntroMp =
_lhsIcvarIntroMp
_funcOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_funcOlev =
_lhsIlev
_funcOnmMp =
_lhsInmMp
_funcOnoTrfNmS =
_lhsInoTrfNmS
_funcOnoTrfToConNmS =
_lhsInoTrfToConNmS
( _funcIbindNmMp,_funcIcTrf,_funcIfvS,_funcIlevOf,_funcImbRepl) =
func_ _funcOallowTrfToCon _funcOcvarIntroMp _funcOintroCVarIntroMp _funcOlev _funcOnmMp _funcOnoTrfNmS _funcOnoTrfToConNmS
in ( _lhsObindNmMp,_lhsOcTrf,_lhsOfvS,_lhsOlevOf,_lhsOmbRepl)))
sem_CExpr_ImplsLam :: ImplsVarId ->
T_CExpr ->
T_CExpr
sem_CExpr_ImplsLam uid_ body_ =
(\ _lhsIallowTrfToCon
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp
_lhsInoTrfNmS
_lhsInoTrfToConNmS ->
(let _lhsOmbRepl :: (Maybe CExpr)
_lhsObindNmMp :: NmMp
_lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CExpr
_bodyOallowTrfToCon :: Bool
_bodyOcvarIntroMp :: CVarIntroMp
_bodyOintroCVarIntroMp :: CVarIntroMp
_bodyOlev :: Int
_bodyOnmMp :: NmMp
_bodyOnoTrfNmS :: HsNameS
_bodyOnoTrfToConNmS :: HsNameS
_bodyIbindNmMp :: NmMp
_bodyIcTrf :: CExpr
_bodyIfvS :: FvS
_bodyIlevOf :: Int
_bodyImbRepl :: (Maybe CExpr)
_lhsOmbRepl =
Nothing
_lhsObindNmMp =
_bodyIbindNmMp
_lhsOfvS =
_bodyIfvS
_lhsOlevOf =
_bodyIlevOf
_cTrf =
CExpr_ImplsLam uid_ _bodyIcTrf
_lhsOcTrf =
_cTrf
_bodyOallowTrfToCon =
_lhsIallowTrfToCon
_bodyOcvarIntroMp =
_lhsIcvarIntroMp
_bodyOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_bodyOlev =
_lhsIlev
_bodyOnmMp =
_lhsInmMp
_bodyOnoTrfNmS =
_lhsInoTrfNmS
_bodyOnoTrfToConNmS =
_lhsInoTrfToConNmS
( _bodyIbindNmMp,_bodyIcTrf,_bodyIfvS,_bodyIlevOf,_bodyImbRepl) =
body_ _bodyOallowTrfToCon _bodyOcvarIntroMp _bodyOintroCVarIntroMp _bodyOlev _bodyOnmMp _bodyOnoTrfNmS _bodyOnoTrfToConNmS
in ( _lhsObindNmMp,_lhsOcTrf,_lhsOfvS,_lhsOlevOf,_lhsOmbRepl)))
sem_CExpr_Ann :: T_CExprAnn ->
T_CExpr ->
T_CExpr
sem_CExpr_Ann ann_ expr_ =
(\ _lhsIallowTrfToCon
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp
_lhsInoTrfNmS
_lhsInoTrfToConNmS ->
(let _lhsObindNmMp :: NmMp
_lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CExpr
_lhsOmbRepl :: (Maybe CExpr)
_annOcvarIntroMp :: CVarIntroMp
_annOintroCVarIntroMp :: CVarIntroMp
_annOlev :: Int
_annOnmMp :: NmMp
_exprOallowTrfToCon :: Bool
_exprOcvarIntroMp :: CVarIntroMp
_exprOintroCVarIntroMp :: CVarIntroMp
_exprOlev :: Int
_exprOnmMp :: NmMp
_exprOnoTrfNmS :: HsNameS
_exprOnoTrfToConNmS :: HsNameS
_annIcTrf :: CExprAnn
_annIfvS :: FvS
_annIlevOf :: Int
_exprIbindNmMp :: NmMp
_exprIcTrf :: CExpr
_exprIfvS :: FvS
_exprIlevOf :: Int
_exprImbRepl :: (Maybe CExpr)
_lhsObindNmMp =
_exprIbindNmMp
_lhsOfvS =
_annIfvS `Set.union` _exprIfvS
_lhsOlevOf =
_annIlevOf `max` _exprIlevOf
_cTrf =
CExpr_Ann _annIcTrf _exprIcTrf
_lhsOcTrf =
_cTrf
_lhsOmbRepl =
_exprImbRepl
_annOcvarIntroMp =
_lhsIcvarIntroMp
_annOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_annOlev =
_lhsIlev
_annOnmMp =
_lhsInmMp
_exprOallowTrfToCon =
_lhsIallowTrfToCon
_exprOcvarIntroMp =
_lhsIcvarIntroMp
_exprOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_exprOlev =
_lhsIlev
_exprOnmMp =
_lhsInmMp
_exprOnoTrfNmS =
_lhsInoTrfNmS
_exprOnoTrfToConNmS =
_lhsInoTrfToConNmS
( _annIcTrf,_annIfvS,_annIlevOf) =
ann_ _annOcvarIntroMp _annOintroCVarIntroMp _annOlev _annOnmMp
( _exprIbindNmMp,_exprIcTrf,_exprIfvS,_exprIlevOf,_exprImbRepl) =
expr_ _exprOallowTrfToCon _exprOcvarIntroMp _exprOintroCVarIntroMp _exprOlev _exprOnmMp _exprOnoTrfNmS _exprOnoTrfToConNmS
in ( _lhsObindNmMp,_lhsOcTrf,_lhsOfvS,_lhsOlevOf,_lhsOmbRepl)))
sem_CExprAnn :: CExprAnn ->
T_CExprAnn
sem_CExprAnn (CExprAnn_Ty _ty) =
(sem_CExprAnn_Ty _ty)
sem_CExprAnn (CExprAnn_Debug _info) =
(sem_CExprAnn_Debug _info)
type T_CExprAnn = CVarIntroMp ->
CVarIntroMp ->
Int ->
NmMp ->
( CExprAnn,FvS,Int)
sem_CExprAnn_Ty :: Ty ->
T_CExprAnn
sem_CExprAnn_Ty ty_ =
(\ _lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp ->
(let _lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CExprAnn
_lhsOfvS =
Set.empty
_lhsOlevOf =
cLevModule
_cTrf =
CExprAnn_Ty ty_
_lhsOcTrf =
_cTrf
in ( _lhsOcTrf,_lhsOfvS,_lhsOlevOf)))
sem_CExprAnn_Debug :: String ->
T_CExprAnn
sem_CExprAnn_Debug info_ =
(\ _lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp ->
(let _lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CExprAnn
_lhsOfvS =
Set.empty
_lhsOlevOf =
cLevModule
_cTrf =
CExprAnn_Debug info_
_lhsOcTrf =
_cTrf
in ( _lhsOcTrf,_lhsOfvS,_lhsOlevOf)))
sem_CImport :: CImport ->
T_CImport
sem_CImport (CImport_Import _nm) =
(sem_CImport_Import _nm)
type T_CImport = ( CImport)
sem_CImport_Import :: HsName ->
T_CImport
sem_CImport_Import nm_ =
(let _lhsOcTrf :: CImport
_cTrf =
CImport_Import nm_
_lhsOcTrf =
_cTrf
in ( _lhsOcTrf))
sem_CImportL :: CImportL ->
T_CImportL
sem_CImportL list =
(Prelude.foldr sem_CImportL_Cons sem_CImportL_Nil (Prelude.map sem_CImport list))
type T_CImportL = ( CImportL)
sem_CImportL_Cons :: T_CImport ->
T_CImportL ->
T_CImportL
sem_CImportL_Cons hd_ tl_ =
(let _lhsOcTrf :: CImportL
_hdIcTrf :: CImport
_tlIcTrf :: CImportL
_cTrf =
(:) _hdIcTrf _tlIcTrf
_lhsOcTrf =
_cTrf
( _hdIcTrf) =
hd_
( _tlIcTrf) =
tl_
in ( _lhsOcTrf))
sem_CImportL_Nil :: T_CImportL
sem_CImportL_Nil =
(let _lhsOcTrf :: CImportL
_cTrf =
[]
_lhsOcTrf =
_cTrf
in ( _lhsOcTrf))
sem_CMetaBind :: CMetaBind ->
T_CMetaBind
sem_CMetaBind (CMetaBind_Plain) =
(sem_CMetaBind_Plain)
sem_CMetaBind (CMetaBind_Function0) =
(sem_CMetaBind_Function0)
sem_CMetaBind (CMetaBind_Function1) =
(sem_CMetaBind_Function1)
sem_CMetaBind (CMetaBind_Apply0) =
(sem_CMetaBind_Apply0)
type T_CMetaBind = CVarIntroMp ->
CVarIntroMp ->
Int ->
NmMp ->
( CMetaBind,FvS,Int,CMetaBind)
sem_CMetaBind_Plain :: T_CMetaBind
sem_CMetaBind_Plain =
(\ _lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp ->
(let _lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CMetaBind
_lhsOself :: CMetaBind
_lhsOfvS =
Set.empty
_lhsOlevOf =
cLevModule
_cTrf =
CMetaBind_Plain
_self =
CMetaBind_Plain
_lhsOcTrf =
_cTrf
_lhsOself =
_self
in ( _lhsOcTrf,_lhsOfvS,_lhsOlevOf,_lhsOself)))
sem_CMetaBind_Function0 :: T_CMetaBind
sem_CMetaBind_Function0 =
(\ _lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp ->
(let _lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CMetaBind
_lhsOself :: CMetaBind
_lhsOfvS =
Set.empty
_lhsOlevOf =
cLevModule
_cTrf =
CMetaBind_Function0
_self =
CMetaBind_Function0
_lhsOcTrf =
_cTrf
_lhsOself =
_self
in ( _lhsOcTrf,_lhsOfvS,_lhsOlevOf,_lhsOself)))
sem_CMetaBind_Function1 :: T_CMetaBind
sem_CMetaBind_Function1 =
(\ _lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp ->
(let _lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CMetaBind
_lhsOself :: CMetaBind
_lhsOfvS =
Set.empty
_lhsOlevOf =
cLevModule
_cTrf =
CMetaBind_Function1
_self =
CMetaBind_Function1
_lhsOcTrf =
_cTrf
_lhsOself =
_self
in ( _lhsOcTrf,_lhsOfvS,_lhsOlevOf,_lhsOself)))
sem_CMetaBind_Apply0 :: T_CMetaBind
sem_CMetaBind_Apply0 =
(\ _lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp ->
(let _lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CMetaBind
_lhsOself :: CMetaBind
_lhsOfvS =
Set.empty
_lhsOlevOf =
cLevModule
_cTrf =
CMetaBind_Apply0
_self =
CMetaBind_Apply0
_lhsOcTrf =
_cTrf
_lhsOself =
_self
in ( _lhsOcTrf,_lhsOfvS,_lhsOlevOf,_lhsOself)))
sem_CMetaVal :: CMetaVal ->
T_CMetaVal
sem_CMetaVal (CMetaVal_Val) =
(sem_CMetaVal_Val)
sem_CMetaVal (CMetaVal_Dict) =
(sem_CMetaVal_Dict)
sem_CMetaVal (CMetaVal_DictClass _tracks) =
(sem_CMetaVal_DictClass _tracks)
sem_CMetaVal (CMetaVal_DictInstance _tracks) =
(sem_CMetaVal_DictInstance _tracks)
sem_CMetaVal (CMetaVal_Track _track) =
(sem_CMetaVal_Track _track)
type T_CMetaVal = NmMp ->
CVarIntroMp ->
CVarIntroMp ->
Int ->
NmMp ->
( CMetaVal,FvS,Int,HsNameS,CMetaVal)
sem_CMetaVal_Val :: T_CMetaVal
sem_CMetaVal_Val =
(\ _lhsIbindNmMp
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp ->
(let _lhsOnameS :: HsNameS
_lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CMetaVal
_lhsOself :: CMetaVal
_lhsOnameS =
Set.empty
_lhsOfvS =
Set.empty
_lhsOlevOf =
cLevModule
_cTrf =
CMetaVal_Val
_self =
CMetaVal_Val
_lhsOcTrf =
_cTrf
_lhsOself =
_self
in ( _lhsOcTrf,_lhsOfvS,_lhsOlevOf,_lhsOnameS,_lhsOself)))
sem_CMetaVal_Dict :: T_CMetaVal
sem_CMetaVal_Dict =
(\ _lhsIbindNmMp
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp ->
(let _lhsOnameS :: HsNameS
_lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CMetaVal
_lhsOself :: CMetaVal
_lhsOnameS =
Set.empty
_lhsOfvS =
Set.empty
_lhsOlevOf =
cLevModule
_cTrf =
CMetaVal_Dict
_self =
CMetaVal_Dict
_lhsOcTrf =
_cTrf
_lhsOself =
_self
in ( _lhsOcTrf,_lhsOfvS,_lhsOlevOf,_lhsOnameS,_lhsOself)))
sem_CMetaVal_DictClass :: ([Track]) ->
T_CMetaVal
sem_CMetaVal_DictClass tracks_ =
(\ _lhsIbindNmMp
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp ->
(let _lhsOnameS :: HsNameS
_lhsOcTrf :: CMetaVal
_lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOself :: CMetaVal
_lhsOnameS =
Set.fromList (concatMap trackNames tracks_)
_lhsOcTrf =
CMetaVal_DictClass (map (substTrack _lhsIbindNmMp) tracks_)
_lhsOfvS =
Set.empty
_lhsOlevOf =
cLevModule
_cTrf =
CMetaVal_DictClass tracks_
_self =
CMetaVal_DictClass tracks_
_lhsOself =
_self
in ( _lhsOcTrf,_lhsOfvS,_lhsOlevOf,_lhsOnameS,_lhsOself)))
sem_CMetaVal_DictInstance :: ([Track]) ->
T_CMetaVal
sem_CMetaVal_DictInstance tracks_ =
(\ _lhsIbindNmMp
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp ->
(let _lhsOnameS :: HsNameS
_lhsOcTrf :: CMetaVal
_lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOself :: CMetaVal
_lhsOnameS =
Set.fromList (concatMap trackNames tracks_)
_lhsOcTrf =
CMetaVal_DictInstance (map (substTrack _lhsIbindNmMp) tracks_)
_lhsOfvS =
Set.empty
_lhsOlevOf =
cLevModule
_cTrf =
CMetaVal_DictInstance tracks_
_self =
CMetaVal_DictInstance tracks_
_lhsOself =
_self
in ( _lhsOcTrf,_lhsOfvS,_lhsOlevOf,_lhsOnameS,_lhsOself)))
sem_CMetaVal_Track :: Track ->
T_CMetaVal
sem_CMetaVal_Track track_ =
(\ _lhsIbindNmMp
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp ->
(let _lhsOnameS :: HsNameS
_lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CMetaVal
_lhsOself :: CMetaVal
_lhsOnameS =
Set.empty
_lhsOfvS =
Set.empty
_lhsOlevOf =
cLevModule
_cTrf =
CMetaVal_Track track_
_self =
CMetaVal_Track track_
_lhsOcTrf =
_cTrf
_lhsOself =
_self
in ( _lhsOcTrf,_lhsOfvS,_lhsOlevOf,_lhsOnameS,_lhsOself)))
sem_CMetas :: CMetas ->
T_CMetas
sem_CMetas ( x1,x2) =
(sem_CMetas_Tuple (sem_CMetaBind x1) (sem_CMetaVal x2))
type T_CMetas = NmMp ->
CVarIntroMp ->
CVarIntroMp ->
Int ->
NmMp ->
( CMetas,FvS,Int,HsNameS,CMetas)
sem_CMetas_Tuple :: T_CMetaBind ->
T_CMetaVal ->
T_CMetas
sem_CMetas_Tuple x1_ x2_ =
(\ _lhsIbindNmMp
_lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp ->
(let _lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CMetas
_lhsOself :: CMetas
_lhsOnameS :: HsNameS
_x1OcvarIntroMp :: CVarIntroMp
_x1OintroCVarIntroMp :: CVarIntroMp
_x1Olev :: Int
_x1OnmMp :: NmMp
_x2ObindNmMp :: NmMp
_x2OcvarIntroMp :: CVarIntroMp
_x2OintroCVarIntroMp :: CVarIntroMp
_x2Olev :: Int
_x2OnmMp :: NmMp
_x1IcTrf :: CMetaBind
_x1IfvS :: FvS
_x1IlevOf :: Int
_x1Iself :: CMetaBind
_x2IcTrf :: CMetaVal
_x2IfvS :: FvS
_x2IlevOf :: Int
_x2InameS :: HsNameS
_x2Iself :: CMetaVal
_lhsOfvS =
_x1IfvS `Set.union` _x2IfvS
_lhsOlevOf =
_x1IlevOf `max` _x2IlevOf
_cTrf =
(_x1IcTrf,_x2IcTrf)
_self =
(_x1Iself,_x2Iself)
_lhsOcTrf =
_cTrf
_lhsOself =
_self
_lhsOnameS =
_x2InameS
_x1OcvarIntroMp =
_lhsIcvarIntroMp
_x1OintroCVarIntroMp =
_lhsIintroCVarIntroMp
_x1Olev =
_lhsIlev
_x1OnmMp =
_lhsInmMp
_x2ObindNmMp =
_lhsIbindNmMp
_x2OcvarIntroMp =
_lhsIcvarIntroMp
_x2OintroCVarIntroMp =
_lhsIintroCVarIntroMp
_x2Olev =
_lhsIlev
_x2OnmMp =
_lhsInmMp
( _x1IcTrf,_x1IfvS,_x1IlevOf,_x1Iself) =
x1_ _x1OcvarIntroMp _x1OintroCVarIntroMp _x1Olev _x1OnmMp
( _x2IcTrf,_x2IfvS,_x2IlevOf,_x2InameS,_x2Iself) =
x2_ _x2ObindNmMp _x2OcvarIntroMp _x2OintroCVarIntroMp _x2Olev _x2OnmMp
in ( _lhsOcTrf,_lhsOfvS,_lhsOlevOf,_lhsOnameS,_lhsOself)))
sem_CModule :: CModule ->
T_CModule
sem_CModule (CModule_Mod _moduleNm _exports _imports _declMetas _expr) =
(sem_CModule_Mod _moduleNm (sem_CExportL _exports) (sem_CImportL _imports) (sem_CDeclMetaL _declMetas) (sem_CExpr _expr))
type T_CModule = CVarIntroMp ->
CVarIntroMp ->
Int ->
NmMp ->
HsNameS ->
( CModule,FvS,Int)
sem_CModule_Mod :: HsName ->
T_CExportL ->
T_CImportL ->
T_CDeclMetaL ->
T_CExpr ->
T_CModule
sem_CModule_Mod moduleNm_ exports_ imports_ declMetas_ expr_ =
(\ _lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp
_lhsInoTrfNmS ->
(let _exprOallowTrfToCon :: Bool
_exprOnoTrfToConNmS :: HsNameS
_lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CModule
_exprOcvarIntroMp :: CVarIntroMp
_exprOintroCVarIntroMp :: CVarIntroMp
_exprOlev :: Int
_exprOnmMp :: NmMp
_exprOnoTrfNmS :: HsNameS
_exportsIcTrf :: CExportL
_importsIcTrf :: CImportL
_declMetasIcTrf :: CDeclMetaL
_exprIbindNmMp :: NmMp
_exprIcTrf :: CExpr
_exprIfvS :: FvS
_exprIlevOf :: Int
_exprImbRepl :: (Maybe CExpr)
_exprOallowTrfToCon =
True
_exprOnoTrfToConNmS =
Set.empty
_lhsOfvS =
_exprIfvS
_lhsOlevOf =
_exprIlevOf
_cTrf =
CModule_Mod moduleNm_ _exportsIcTrf _importsIcTrf _declMetasIcTrf _exprIcTrf
_lhsOcTrf =
_cTrf
_exprOcvarIntroMp =
_lhsIcvarIntroMp
_exprOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_exprOlev =
_lhsIlev
_exprOnmMp =
_lhsInmMp
_exprOnoTrfNmS =
_lhsInoTrfNmS
( _exportsIcTrf) =
exports_
( _importsIcTrf) =
imports_
( _declMetasIcTrf) =
declMetas_
( _exprIbindNmMp,_exprIcTrf,_exprIfvS,_exprIlevOf,_exprImbRepl) =
expr_ _exprOallowTrfToCon _exprOcvarIntroMp _exprOintroCVarIntroMp _exprOlev _exprOnmMp _exprOnoTrfNmS _exprOnoTrfToConNmS
in ( _lhsOcTrf,_lhsOfvS,_lhsOlevOf)))
sem_CPat :: CPat ->
T_CPat
sem_CPat (CPat_Var _pnm) =
(sem_CPat_Var _pnm)
sem_CPat (CPat_Con _tag _rest _binds) =
(sem_CPat_Con _tag (sem_CPatRest _rest) (sem_CPatFldL _binds))
sem_CPat (CPat_Int _int) =
(sem_CPat_Int _int)
sem_CPat (CPat_Char _char) =
(sem_CPat_Char _char)
sem_CPat (CPat_BoolExpr _cexpr) =
(sem_CPat_BoolExpr _cexpr)
type T_CPat = CVarIntroMp ->
CVarIntroMp ->
Int ->
NmMp ->
( CPat,([HsName]),FvS,Int,([HsName]))
sem_CPat_Var :: HsName ->
T_CPat
sem_CPat_Var pnm_ =
(\ _lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp ->
(let _lhsOnmL :: ([HsName])
_lhsOfldNmL :: ([HsName])
_lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CPat
_lhsOnmL =
[pnm_]
_lhsOfldNmL =
[]
_lhsOfvS =
Set.empty
_lhsOlevOf =
cLevModule
_cTrf =
CPat_Var pnm_
_lhsOcTrf =
_cTrf
in ( _lhsOcTrf,_lhsOfldNmL,_lhsOfvS,_lhsOlevOf,_lhsOnmL)))
sem_CPat_Con :: CTag ->
T_CPatRest ->
T_CPatFldL ->
T_CPat
sem_CPat_Con tag_ rest_ binds_ =
(\ _lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp ->
(let _lhsOnmL :: ([HsName])
_lhsOfldNmL :: ([HsName])
_lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CPat
_restOcvarIntroMp :: CVarIntroMp
_restOintroCVarIntroMp :: CVarIntroMp
_restOlev :: Int
_restOnmMp :: NmMp
_bindsOcvarIntroMp :: CVarIntroMp
_bindsOintroCVarIntroMp :: CVarIntroMp
_bindsOlev :: Int
_bindsOnmMp :: NmMp
_restIcTrf :: CPatRest
_restIfvS :: FvS
_restIlevOf :: Int
_restInmL :: ([HsName])
_bindsIcTrf :: CPatFldL
_bindsIfldNmL :: ([HsName])
_bindsIfvS :: FvS
_bindsIlevOf :: Int
_bindsInmL :: ([HsName])
_lhsOnmL =
_restInmL ++ _bindsInmL
_lhsOfldNmL =
_bindsIfldNmL
_lhsOfvS =
_restIfvS `Set.union` _bindsIfvS
_lhsOlevOf =
_restIlevOf `max` _bindsIlevOf
_cTrf =
CPat_Con tag_ _restIcTrf _bindsIcTrf
_lhsOcTrf =
_cTrf
_restOcvarIntroMp =
_lhsIcvarIntroMp
_restOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_restOlev =
_lhsIlev
_restOnmMp =
_lhsInmMp
_bindsOcvarIntroMp =
_lhsIcvarIntroMp
_bindsOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_bindsOlev =
_lhsIlev
_bindsOnmMp =
_lhsInmMp
( _restIcTrf,_restIfvS,_restIlevOf,_restInmL) =
rest_ _restOcvarIntroMp _restOintroCVarIntroMp _restOlev _restOnmMp
( _bindsIcTrf,_bindsIfldNmL,_bindsIfvS,_bindsIlevOf,_bindsInmL) =
binds_ _bindsOcvarIntroMp _bindsOintroCVarIntroMp _bindsOlev _bindsOnmMp
in ( _lhsOcTrf,_lhsOfldNmL,_lhsOfvS,_lhsOlevOf,_lhsOnmL)))
sem_CPat_Int :: Int ->
T_CPat
sem_CPat_Int int_ =
(\ _lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp ->
(let _lhsOfldNmL :: ([HsName])
_lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOnmL :: ([HsName])
_lhsOcTrf :: CPat
_lhsOfldNmL =
[]
_lhsOfvS =
Set.empty
_lhsOlevOf =
cLevModule
_lhsOnmL =
[]
_cTrf =
CPat_Int int_
_lhsOcTrf =
_cTrf
in ( _lhsOcTrf,_lhsOfldNmL,_lhsOfvS,_lhsOlevOf,_lhsOnmL)))
sem_CPat_Char :: Char ->
T_CPat
sem_CPat_Char char_ =
(\ _lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp ->
(let _lhsOfldNmL :: ([HsName])
_lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOnmL :: ([HsName])
_lhsOcTrf :: CPat
_lhsOfldNmL =
[]
_lhsOfvS =
Set.empty
_lhsOlevOf =
cLevModule
_lhsOnmL =
[]
_cTrf =
CPat_Char char_
_lhsOcTrf =
_cTrf
in ( _lhsOcTrf,_lhsOfldNmL,_lhsOfvS,_lhsOlevOf,_lhsOnmL)))
sem_CPat_BoolExpr :: CExpr ->
T_CPat
sem_CPat_BoolExpr cexpr_ =
(\ _lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp ->
(let _lhsOfldNmL :: ([HsName])
_lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOnmL :: ([HsName])
_lhsOcTrf :: CPat
_lhsOfldNmL =
[]
_lhsOfvS =
Set.empty
_lhsOlevOf =
cLevModule
_lhsOnmL =
[]
_cTrf =
CPat_BoolExpr cexpr_
_lhsOcTrf =
_cTrf
in ( _lhsOcTrf,_lhsOfldNmL,_lhsOfvS,_lhsOlevOf,_lhsOnmL)))
sem_CPatFld :: CPatFld ->
T_CPatFld
sem_CPatFld (CPatFld_Fld _lbl _offset _bind _fldAnns) =
(sem_CPatFld_Fld _lbl (sem_CExpr _offset) (sem_CBind _bind) (sem_CBindAnnL _fldAnns))
type T_CPatFld = CVarIntroMp ->
CVarIntroMp ->
Int ->
NmMp ->
( CPatFld,([HsName]),FvS,Int,([HsName]))
sem_CPatFld_Fld :: HsName ->
T_CExpr ->
T_CBind ->
T_CBindAnnL ->
T_CPatFld
sem_CPatFld_Fld lbl_ offset_ bind_ fldAnns_ =
(\ _lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp ->
(let _lhsOnmL :: ([HsName])
_lhsOfldNmL :: ([HsName])
_bindOisGlobal :: Bool
_offsetOallowTrfToCon :: Bool
_bindOallowTrfToCon :: Bool
_offsetOnoTrfToConNmS :: HsNameS
_bindOnoTrfToConNmS :: HsNameS
_lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CPatFld
_offsetOcvarIntroMp :: CVarIntroMp
_offsetOintroCVarIntroMp :: CVarIntroMp
_offsetOlev :: Int
_offsetOnmMp :: NmMp
_offsetOnoTrfNmS :: HsNameS
_bindOcvarIntroMp :: CVarIntroMp
_bindOintroCVarIntroMp :: CVarIntroMp
_bindOlev :: Int
_bindOnmMp :: NmMp
_bindOnoTrfNmS :: HsNameS
_fldAnnsOcvarIntroMp :: CVarIntroMp
_fldAnnsOintroCVarIntroMp :: CVarIntroMp
_fldAnnsOlev :: Int
_fldAnnsOnmMp :: NmMp
_offsetIbindNmMp :: NmMp
_offsetIcTrf :: CExpr
_offsetIfvS :: FvS
_offsetIlevOf :: Int
_offsetImbRepl :: (Maybe CExpr)
_bindIbindL :: ([(HsName,CBind)])
_bindIbindNmMp :: NmMp
_bindIbindsIntroCVarIntroMp :: CVarIntroMp
_bindIbindsNoTrfNmS :: HsNameS
_bindIcTrf :: CBind
_bindIcvarIntroExprMp :: CVarIntroMp
_bindIfvS :: FvS
_bindIfvSMp :: FvSMp
_bindIlevOf :: Int
_bindInm :: HsName
_bindInmL :: ([HsName])
_fldAnnsIcTrf :: CBindAnnL
_fldAnnsIfvS :: FvS
_fldAnnsIlevOf :: Int
_fldAnnsInmL :: ([HsName])
_lhsOnmL =
[_fldNm]
_fldNm =
_bindInm
_lhsOfldNmL =
[_fldNm]
_bindOisGlobal =
False
_noTrfNmS =
Set.empty
_offsetOallowTrfToCon =
True
_bindOallowTrfToCon =
False
_offsetOnoTrfToConNmS =
Set.empty
_bindOnoTrfToConNmS =
Set.empty
_lhsOfvS =
_offsetIfvS `Set.union` _bindIfvS `Set.union` _fldAnnsIfvS
_lhsOlevOf =
_offsetIlevOf `max` _bindIlevOf `max` _fldAnnsIlevOf
_cTrf =
CPatFld_Fld lbl_ _offsetIcTrf _bindIcTrf _fldAnnsIcTrf
_lhsOcTrf =
_cTrf
_offsetOcvarIntroMp =
_lhsIcvarIntroMp
_offsetOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_offsetOlev =
_lhsIlev
_offsetOnmMp =
_lhsInmMp
_offsetOnoTrfNmS =
_noTrfNmS
_bindOcvarIntroMp =
_lhsIcvarIntroMp
_bindOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_bindOlev =
_lhsIlev
_bindOnmMp =
_lhsInmMp
_bindOnoTrfNmS =
_noTrfNmS
_fldAnnsOcvarIntroMp =
_lhsIcvarIntroMp
_fldAnnsOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_fldAnnsOlev =
_lhsIlev
_fldAnnsOnmMp =
_lhsInmMp
( _offsetIbindNmMp,_offsetIcTrf,_offsetIfvS,_offsetIlevOf,_offsetImbRepl) =
offset_ _offsetOallowTrfToCon _offsetOcvarIntroMp _offsetOintroCVarIntroMp _offsetOlev _offsetOnmMp _offsetOnoTrfNmS _offsetOnoTrfToConNmS
( _bindIbindL,_bindIbindNmMp,_bindIbindsIntroCVarIntroMp,_bindIbindsNoTrfNmS,_bindIcTrf,_bindIcvarIntroExprMp,_bindIfvS,_bindIfvSMp,_bindIlevOf,_bindInm,_bindInmL) =
bind_ _bindOallowTrfToCon _bindOcvarIntroMp _bindOintroCVarIntroMp _bindOisGlobal _bindOlev _bindOnmMp _bindOnoTrfNmS _bindOnoTrfToConNmS
( _fldAnnsIcTrf,_fldAnnsIfvS,_fldAnnsIlevOf,_fldAnnsInmL) =
fldAnns_ _fldAnnsOcvarIntroMp _fldAnnsOintroCVarIntroMp _fldAnnsOlev _fldAnnsOnmMp
in ( _lhsOcTrf,_lhsOfldNmL,_lhsOfvS,_lhsOlevOf,_lhsOnmL)))
sem_CPatFldL :: CPatFldL ->
T_CPatFldL
sem_CPatFldL list =
(Prelude.foldr sem_CPatFldL_Cons sem_CPatFldL_Nil (Prelude.map sem_CPatFld list))
type T_CPatFldL = CVarIntroMp ->
CVarIntroMp ->
Int ->
NmMp ->
( CPatFldL,([HsName]),FvS,Int,([HsName]))
sem_CPatFldL_Cons :: T_CPatFld ->
T_CPatFldL ->
T_CPatFldL
sem_CPatFldL_Cons hd_ tl_ =
(\ _lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp ->
(let _lhsOfldNmL :: ([HsName])
_lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOnmL :: ([HsName])
_lhsOcTrf :: CPatFldL
_hdOcvarIntroMp :: CVarIntroMp
_hdOintroCVarIntroMp :: CVarIntroMp
_hdOlev :: Int
_hdOnmMp :: NmMp
_tlOcvarIntroMp :: CVarIntroMp
_tlOintroCVarIntroMp :: CVarIntroMp
_tlOlev :: Int
_tlOnmMp :: NmMp
_hdIcTrf :: CPatFld
_hdIfldNmL :: ([HsName])
_hdIfvS :: FvS
_hdIlevOf :: Int
_hdInmL :: ([HsName])
_tlIcTrf :: CPatFldL
_tlIfldNmL :: ([HsName])
_tlIfvS :: FvS
_tlIlevOf :: Int
_tlInmL :: ([HsName])
_lhsOfldNmL =
_hdIfldNmL ++ _tlIfldNmL
_lhsOfvS =
_hdIfvS `Set.union` _tlIfvS
_lhsOlevOf =
_hdIlevOf `max` _tlIlevOf
_lhsOnmL =
_hdInmL ++ _tlInmL
_cTrf =
(:) _hdIcTrf _tlIcTrf
_lhsOcTrf =
_cTrf
_hdOcvarIntroMp =
_lhsIcvarIntroMp
_hdOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_hdOlev =
_lhsIlev
_hdOnmMp =
_lhsInmMp
_tlOcvarIntroMp =
_lhsIcvarIntroMp
_tlOintroCVarIntroMp =
_lhsIintroCVarIntroMp
_tlOlev =
_lhsIlev
_tlOnmMp =
_lhsInmMp
( _hdIcTrf,_hdIfldNmL,_hdIfvS,_hdIlevOf,_hdInmL) =
hd_ _hdOcvarIntroMp _hdOintroCVarIntroMp _hdOlev _hdOnmMp
( _tlIcTrf,_tlIfldNmL,_tlIfvS,_tlIlevOf,_tlInmL) =
tl_ _tlOcvarIntroMp _tlOintroCVarIntroMp _tlOlev _tlOnmMp
in ( _lhsOcTrf,_lhsOfldNmL,_lhsOfvS,_lhsOlevOf,_lhsOnmL)))
sem_CPatFldL_Nil :: T_CPatFldL
sem_CPatFldL_Nil =
(\ _lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp ->
(let _lhsOfldNmL :: ([HsName])
_lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOnmL :: ([HsName])
_lhsOcTrf :: CPatFldL
_lhsOfldNmL =
[]
_lhsOfvS =
Set.empty
_lhsOlevOf =
cLevModule
_lhsOnmL =
[]
_cTrf =
[]
_lhsOcTrf =
_cTrf
in ( _lhsOcTrf,_lhsOfldNmL,_lhsOfvS,_lhsOlevOf,_lhsOnmL)))
sem_CPatRest :: CPatRest ->
T_CPatRest
sem_CPatRest (CPatRest_Var _nm) =
(sem_CPatRest_Var _nm)
sem_CPatRest (CPatRest_Empty) =
(sem_CPatRest_Empty)
type T_CPatRest = CVarIntroMp ->
CVarIntroMp ->
Int ->
NmMp ->
( CPatRest,FvS,Int,([HsName]))
sem_CPatRest_Var :: HsName ->
T_CPatRest
sem_CPatRest_Var nm_ =
(\ _lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp ->
(let _lhsOnmL :: ([HsName])
_lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOcTrf :: CPatRest
_lhsOnmL =
[nm_]
_lhsOfvS =
Set.empty
_lhsOlevOf =
cLevModule
_cTrf =
CPatRest_Var nm_
_lhsOcTrf =
_cTrf
in ( _lhsOcTrf,_lhsOfvS,_lhsOlevOf,_lhsOnmL)))
sem_CPatRest_Empty :: T_CPatRest
sem_CPatRest_Empty =
(\ _lhsIcvarIntroMp
_lhsIintroCVarIntroMp
_lhsIlev
_lhsInmMp ->
(let _lhsOfvS :: FvS
_lhsOlevOf :: Int
_lhsOnmL :: ([HsName])
_lhsOcTrf :: CPatRest
_lhsOfvS =
Set.empty
_lhsOlevOf =
cLevModule
_lhsOnmL =
[]
_cTrf =
CPatRest_Empty
_lhsOcTrf =
_cTrf
in ( _lhsOcTrf,_lhsOfvS,_lhsOlevOf,_lhsOnmL)))
sem_CodeAGItf :: CodeAGItf ->
T_CodeAGItf
sem_CodeAGItf (CodeAGItf_AGItf _module) =
(sem_CodeAGItf_AGItf (sem_CModule _module))
type T_CodeAGItf = HsNameS ->
( CModule)
data Inh_CodeAGItf = Inh_CodeAGItf {noTrfNmS_Inh_CodeAGItf :: !(HsNameS)}
data Syn_CodeAGItf = Syn_CodeAGItf {cTrf_Syn_CodeAGItf :: !(CModule)}
wrap_CodeAGItf :: T_CodeAGItf ->
Inh_CodeAGItf ->
Syn_CodeAGItf
wrap_CodeAGItf sem (Inh_CodeAGItf _lhsInoTrfNmS) =
(let ( _lhsOcTrf) = sem _lhsInoTrfNmS
in (Syn_CodeAGItf _lhsOcTrf))
sem_CodeAGItf_AGItf :: T_CModule ->
T_CodeAGItf
sem_CodeAGItf_AGItf module_ =
(\ _lhsInoTrfNmS ->
(let _moduleOcvarIntroMp :: CVarIntroMp
_moduleOintroCVarIntroMp :: CVarIntroMp
_moduleOlev :: Int
_moduleOnmMp :: NmMp
_lhsOcTrf :: CModule
_moduleOnoTrfNmS :: HsNameS
_moduleIcTrf :: CModule
_moduleIfvS :: FvS
_moduleIlevOf :: Int
_moduleOcvarIntroMp =
Map.empty
_moduleOintroCVarIntroMp =
Map.empty
_moduleOlev =
cLevModule
_moduleOnmMp =
Map.empty
_lhsOcTrf =
_moduleIcTrf
_moduleOnoTrfNmS =
_lhsInoTrfNmS
( _moduleIcTrf,_moduleIfvS,_moduleIlevOf) =
module_ _moduleOcvarIntroMp _moduleOintroCVarIntroMp _moduleOlev _moduleOnmMp _moduleOnoTrfNmS
in ( _lhsOcTrf)))