import TcRnTypes
import MkIface
import Id
+import Pair
import Name
import CoreSyn
import CoreSubst
simplify (App e1 e2) = App (simplify e1) (simplify e2)
simplify (Lit lit) = Lit lit
simplify (Note note e) = Note note (simplify e)
-simplify (Cast e co) = if tcEqType (fst $ coercionKind co) (snd $ coercionKind co)
+simplify (Cast e co) = if eqType (fst $ unPair $ coercionKind co) (snd $ unPair $ coercionKind co)
then simplify e
else Cast (simplify e) co
simplify (Lam v e) = Lam v (simplify e)
-simplify (Type t) = Type t
simplify (Case e b ty as) = Case (simplify e) b ty (map (\(a,b,e) -> (a,b,simplify e)) as)
simplify (Let bind body) = foldr Let (simplify body) (simplifyBind bind)
+simplify (Type t) = Type t
+simplify (Coercion co) = Coercion co
simplifyBind :: Bind CoreBndr -> [Bind CoreBndr]
simplifyBind (NonRec b e) = [NonRec b (simplify e)]
import TcType
import CmmExpr
+import qualified Var
import CmmUtils
import HscTypes
import ForeignCall
-Subproject commit d97b00a6ff6e8e2244927d17bda4b9762fc3d716
+Subproject commit 0f137f4fbe7076b7a0f6b33d661b4f7aa8b4f160
repTyConKey = mkPreludeTyConUnique 155
rep1TyConKey = mkPreludeTyConUnique 156
->>>>>>> 18691d440f90a3dff4ef538091c886af505e5cf5
---------------- Template Haskell -------------------
-- USES TyConUniques 200-299
liftedTypeKind, unliftedTypeKind, openTypeKind,
argTypeKind, ubxTupleKind,
mkArrowKind, mkArrowKinds, isCoercionKind,
+ ecKind,
funTyCon, funTyConName,
primTyCons,
import OccName ( mkTcOcc,mkTyVarOccFS, mkTcOccFS )
import TyCon
import TypeRep
-import Type
-import Coercion
import SrcLoc
import Unique ( mkAlphaTyVarUnique )
import PrelNames
where c = chr (u-2 + ord 'a')
]
+ecKind = liftedTypeKind `mkArrowKind` (liftedTypeKind `mkArrowKind` liftedTypeKind)
+
ecTyVars :: [TyVar]
ecTyVars = tyVarList ecKind
import VarSet
import VarEnv
import TysWiredIn
-import TysPrim( intPrimTy )
+import TysPrim( intPrimTy, ecKind )
import PrimOp( tagToEnumKey )
import PrelNames
import Module
; expr' <- updHetMetLevel (\old_lev -> (fresh_ec_name:old_lev))
$ tcPolyExpr e elt_ty
; unifyType (TyVarTy fresh_ec_name) inferred_name
- ; return $ mkHsWrapCoI coi (HsHetMetBrak (TyVarTy fresh_ec_name) expr') }
+ ; return $ mkHsWrapCo coi (HsHetMetBrak (TyVarTy fresh_ec_name) expr') }
tcExpr (HsHetMetEsc _ _ e) res_ty =
do { cur_level <- getHetMetLevel
; expr' <- updHetMetLevel (\old_lev -> tail old_lev)
$ tcExpr (unLoc e) (mkTyConApp hetMetCodeTypeTyCon [(TyVarTy $ head cur_level),res_ty])
; ty' <- zonkTcType res_ty
- ; return $ mkHsWrapCoI (ACo res_ty) (HsHetMetEsc (TyVarTy $ head cur_level) ty' (noLoc expr')) }
+ ; return $ HsHetMetEsc (TyVarTy $ head cur_level) ty' (noLoc expr') }
tcExpr (HsHetMetCSP _ e) res_ty =
do { cur_level <- getHetMetLevel
; expr' <- updHetMetLevel (\old_lev -> tail old_lev)
$ tcExpr (unLoc e) res_ty
- ; return $ mkHsWrapCoI (ACo res_ty) (HsHetMetCSP (TyVarTy $ head cur_level) (noLoc expr')) }
+ ; return $ HsHetMetCSP (TyVarTy $ head cur_level) (noLoc expr') }
tcExpr (HsApp e1 e2) res_ty = tcApp e1 [e2] res_ty
import TcUnify
import TcIface
import TcType
-import TypeRep ( ecKind )
+import TysPrim ( ecKind )
import {- Kind parts of -} Type
import Var
import VarSet
-- Kind constructors...
liftedTypeKindTyCon, openTypeKindTyCon, unliftedTypeKindTyCon,
argTypeKindTyCon, ubxTupleKindTyCon,
- ecKind,
-- Super Kinds
tySuperKind, tySuperKindTyCon,
| isSubArgTypeKind k = liftedTypeKind
| otherwise = k
-ecKind = liftedTypeKind `mkArrowKind` (liftedTypeKind `mkArrowKind` liftedTypeKind)
\end{code}
\ No newline at end of file
-Subproject commit 696df0cbdfe203a618c325e25c2ed60408ee54b9
+Subproject commit a166b102f16b45e2116f84f01fed840b981d3d40