X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Ftypes%2FTyVar.lhs;h=b7fc8b7d581ece259e1e05683df4f0490748c179;hb=5eb1c77c795f92ed0f4c8023847e9d4be1a4fd0d;hp=7ba82cdab2b4c9aaee75e68b88d1c4926ae39200;hpb=e7498a3ee1d0484d02a9e86633cc179c76ebf36e;p=ghc-hetmet.git diff --git a/ghc/compiler/types/TyVar.lhs b/ghc/compiler/types/TyVar.lhs index 7ba82cd..b7fc8b7 100644 --- a/ghc/compiler/types/TyVar.lhs +++ b/ghc/compiler/types/TyVar.lhs @@ -2,8 +2,8 @@ #include "HsVersions.h" module TyVar ( - GenTyVar(..), TyVar(..), - mkTyVar, + GenTyVar(..), SYN_IE(TyVar), + mkTyVar, mkSysTyVar, tyVarKind, -- TyVar -> Kind cloneTyVar, @@ -12,11 +12,11 @@ module TyVar ( -- We also export "environments" keyed off of -- TyVars and "sets" containing TyVars: - TyVarEnv(..), + SYN_IE(TyVarEnv), nullTyVarEnv, mkTyVarEnv, addOneToTyVarEnv, - growTyVarEnvList, isNullTyVarEnv, lookupTyVarEnv, + growTyVarEnvList, isNullTyVarEnv, lookupTyVarEnv, delFromTyVarEnv, - GenTyVarSet(..), TyVarSet(..), + SYN_IE(GenTyVarSet), SYN_IE(TyVarSet), emptyTyVarSet, unitTyVarSet, unionTyVarSets, unionManyTyVarSets, intersectTyVarSets, mkTyVarSet, tyVarSetToList, elementOfTyVarSet, minusTyVarSet, @@ -24,20 +24,19 @@ module TyVar ( ) where CHK_Ubiq() -- debugging consistency check -IMPORT_DELOOPER(IdLoop) -- for paranoia checking +--IMPORT_DELOOPER(IdLoop) -- for paranoia checking -- friends -import Usage ( GenUsage, Usage(..), usageOmega ) +import Usage ( GenUsage, SYN_IE(Usage), usageOmega ) import Kind ( Kind, mkBoxedTypeKind, mkTypeKind ) -- others import UniqSet -- nearly all of it import UniqFM ( emptyUFM, listToUFM, addToUFM, lookupUFM, - plusUFM, sizeUFM, UniqFM + plusUFM, sizeUFM, delFromUFM, UniqFM ) -import Maybes ( Maybe(..) ) import Name ( mkLocalName, changeUnique, Name, RdrName(..) ) -import Pretty ( Pretty(..), PrettyRep, ppBeside, ppPStr ) +import Pretty ( SYN_IE(Pretty), PrettyRep, ppBeside, ppPStr ) import PprStyle ( PprStyle ) --import Outputable ( Outputable(..), NamedThing(..), ExportFlag(..) ) import SrcLoc ( mkUnknownSrcLoc, SrcLoc ) @@ -61,11 +60,17 @@ type TyVar = GenTyVar Usage -- Usage slot makes sense only if Kind = Type Simple construction and analysis functions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ \begin{code} -mkTyVar :: Name -> Unique -> Kind -> TyVar -mkTyVar name uniq kind = TyVar uniq - kind - (Just (changeUnique name uniq)) - usageOmega +mkTyVar :: Name -> Kind -> TyVar +mkTyVar name kind = TyVar (uniqueOf name) + kind + (Just name) + usageOmega + +mkSysTyVar :: Unique -> Kind -> TyVar +mkSysTyVar uniq kind = TyVar uniq + kind + Nothing + usageOmega tyVarKind :: GenTyVar flexi -> Kind tyVarKind (TyVar _ kind _ _) = kind @@ -102,11 +107,13 @@ addOneToTyVarEnv :: TyVarEnv a -> GenTyVar flexi -> a -> TyVarEnv a growTyVarEnvList :: TyVarEnv a -> [(GenTyVar flexi, a)] -> TyVarEnv a isNullTyVarEnv :: TyVarEnv a -> Bool lookupTyVarEnv :: TyVarEnv a -> GenTyVar flexi -> Maybe a +delFromTyVarEnv :: TyVarEnv a -> GenTyVar flexi -> TyVarEnv a nullTyVarEnv = emptyUFM mkTyVarEnv = listToUFM addOneToTyVarEnv = addToUFM lookupTyVarEnv = lookupUFM +delFromTyVarEnv = delFromUFM growTyVarEnvList env pairs = plusUFM env (listToUFM pairs) isNullTyVarEnv env = sizeUFM env == 0