X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FbasicTypes%2FVar.lhs;h=5b3097da7da056b1f561367184fcc463893eee4d;hb=3e35714a039779be26df0bbdeba4e2a282ec799a;hp=2b7b1d69ee098e81cd81f7cb89b7775038958f97;hpb=5822cb8d13aa3c05d2b46b4510c13d94b902eb21;p=ghc-hetmet.git diff --git a/compiler/basicTypes/Var.lhs b/compiler/basicTypes/Var.lhs index 2b7b1d6..5b3097d 100644 --- a/compiler/basicTypes/Var.lhs +++ b/compiler/basicTypes/Var.lhs @@ -5,6 +5,13 @@ \section{@Vars@: Variables} \begin{code} +{-# OPTIONS -w #-} +-- The above warning supression flag is a temporary kludge. +-- While working on this module you are encouraged to remove it and fix +-- any warnings in the module. See +-- http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings +-- for details + module Var ( Var, varName, varUnique, varType, @@ -40,9 +47,7 @@ import {-# SOURCE #-} TypeRep( Type, Kind ) import {-# SOURCE #-} TcType( TcTyVarDetails, pprTcTyVarDetails ) import {-# SOURCE #-} IdInfo( GlobalIdDetails, notGlobalId, IdInfo, seqIdInfo ) -#ifdef DEBUG import {-# SOURCE #-} TypeRep( isCoercionKind ) -#endif import Name hiding (varName) import Unique @@ -161,12 +166,12 @@ varUnique var = mkUniqueGrimily (iBox (realUnique var)) setVarUnique :: Var -> Unique -> Var setVarUnique var uniq - = var { realUnique = getKey# uniq, + = var { realUnique = getKeyFastInt uniq, varName = setNameUnique (varName var) uniq } setVarName :: Var -> Name -> Var setVarName var new_name - = var { realUnique = getKey# (getUnique new_name), + = var { realUnique = getKeyFastInt (getUnique new_name), varName = new_name } \end{code} @@ -194,7 +199,7 @@ setTyVarKind tv k = tv {varType = k} mkTyVar :: Name -> Kind -> TyVar mkTyVar name kind = ASSERT( not (isCoercionKind kind ) ) TyVar { varName = name - , realUnique = getKey# (nameUnique name) + , realUnique = getKeyFastInt (nameUnique name) , varType = kind , isCoercionVar = False } @@ -204,7 +209,7 @@ mkTcTyVar name kind details = -- TOM: no longer valid assertion? -- ASSERT( not (isCoercionKind kind) ) TcTyVar { varName = name, - realUnique = getKey# (nameUnique name), + realUnique = getKeyFastInt (nameUnique name), varType = kind, tcTyVarDetails = details } @@ -226,10 +231,11 @@ setCoVarName = setVarName mkCoVar :: Name -> Kind -> CoVar mkCoVar name kind = ASSERT( isCoercionKind kind ) - TyVar { varName = name - , realUnique = getKey# (nameUnique name) - , varType = kind - , isCoercionVar = True + TyVar { varName = name + , realUnique = getKeyFastInt (nameUnique name) + , varType = kind + -- varType is always PredTy (EqPred t1 t2) + , isCoercionVar = True } mkWildCoVar :: Kind -> TyVar @@ -324,7 +330,7 @@ maybeModifyIdInfo Nothing id = id mkGlobalId :: GlobalIdDetails -> Name -> Type -> IdInfo -> Id mkGlobalId details name ty info = GlobalId { varName = name, - realUnique = getKey# (nameUnique name), -- Cache the unique + realUnique = getKeyFastInt (nameUnique name), -- Cache the unique varType = ty, gblDetails = details, idInfo_ = info } @@ -332,7 +338,7 @@ mkGlobalId details name ty info mk_local_id :: Name -> Type -> LocalIdDetails -> IdInfo -> Id mk_local_id name ty details info = LocalId { varName = name, - realUnique = getKey# (nameUnique name), -- Cache the unique + realUnique = getKeyFastInt (nameUnique name), -- Cache the unique varType = ty, lclDetails = details, idInfo_ = info }