mkLiftedId,
liftExpr,
bindUnlift,
- applyBindUnlifts,
- isUnboxedButNotState
+ applyBindUnlifts
) where
-import Ubiq{-uitous-}
+IMP_Ubiq(){-uitous-}
import CoreSyn
import CoreUtils ( coreExprType )
import Id ( idType, mkSysLocal,
- nullIdEnv, growIdEnvList, lookupIdEnv, IdEnv(..),
- GenId{-instances-}
+ nullIdEnv, growIdEnvList, lookupIdEnv, SYN_IE(IdEnv),
+ GenId{-instances-}, SYN_IE(Id)
)
-import Name ( isLocallyDefined, getSrcLoc )
-import PrelInfo ( liftDataCon, mkLiftTy, statePrimTyCon )
+import Name ( isLocallyDefined, getSrcLoc, getOccString )
import TyCon ( isBoxedTyCon, TyCon{-instance-} )
import Type ( maybeAppDataTyConExpandingDicts, eqTy )
+import TysPrim ( statePrimTyCon )
+import TysWiredIn ( liftDataCon, mkLiftTy )
+import Unique ( Unique )
import UniqSupply ( getUnique, getUniques, splitUniqSupply, UniqSupply )
import Util ( zipEqual, zipWithEqual, assertPanic, panic )
type LiftM a
= IdEnv (Id, Id) -- lifted Ids are mapped to:
-- * lifted Id with the same Unique
- -- (top-level bindings must keep their
- -- unique (see TopLevId in Id.lhs))
+ -- (top-level bindings must keep their unique
-- * unlifted version with a new Unique
-> UniqSupply -- unique supply
-> a -- result
= ASSERT (isUnboxedButNotState unlifted_ty)
(lifted_id, unlifted_id)
where
- id_name = panic "CoreLift.mkLiftedId:id_name" --LATER: getOccName id
+ id_name = _PK_ (getOccString id) -- yuk!
lifted_id = updateIdType id lifted_ty
unlifted_id = mkSysLocal id_name u unlifted_ty (getSrcLoc id)