If we don't have libreadline then we need some dummy definition for complete* functions.
[ghc-hetmet.git] / ghc / compiler / basicTypes / VarEnv.lhs
index f29b940..bfeecdc 100644 (file)
@@ -7,7 +7,7 @@
 module VarEnv (
        VarEnv, IdEnv, TyVarEnv,
        emptyVarEnv, unitVarEnv, mkVarEnv,
-       elemVarEnv, varEnvElts,
+       elemVarEnv, varEnvElts, varEnvKeys,
        extendVarEnv, extendVarEnv_C, extendVarEnvList,
        plusVarEnv, plusVarEnv_C,
        delVarEnvList, delVarEnv,
@@ -15,13 +15,14 @@ module VarEnv (
        mapVarEnv, zipVarEnv,
        modifyVarEnv, modifyVarEnv_Directly,
        isEmptyVarEnv, foldVarEnv, 
-       lookupVarEnv_Directly,
+       elemVarEnvByKey, lookupVarEnv_Directly,
        filterVarEnv_Directly,
 
        -- InScopeSet
        InScopeSet, emptyInScopeSet, mkInScopeSet, delInScopeSet,
        extendInScopeSet, extendInScopeSetList, modifyInScopeSet,
        getInScopeVars, lookupInScope, elemInScopeSet, uniqAway, 
+       mapInScopeSet,
 
        -- RnEnv2 and its operations
        RnEnv2, mkRnEnv2, rnBndr2, rnBndrs2, rnOccL, rnOccR, inRnEnvL, inRnEnvR,
@@ -40,7 +41,7 @@ import UniqFM
 import Unique    ( Unique, deriveUnique, getUnique )
 import Util      ( zipEqual, foldl2 )
 import Maybes    ( orElse, isJust )
-import CmdLineOpts     ( opt_PprStyle_Debug )
+import StaticFlags( opt_PprStyle_Debug )
 import Outputable
 import FastTypes
 \end{code}
@@ -86,6 +87,9 @@ modifyInScopeSet (InScope in_scope n) old_v new_v = InScope (extendVarEnv in_sco
 delInScopeSet :: InScopeSet -> Var -> InScopeSet
 delInScopeSet (InScope in_scope n) v = InScope (in_scope `delVarEnv` v) n
 
+mapInScopeSet :: (Var -> Var) -> InScopeSet -> InScopeSet
+mapInScopeSet f (InScope in_scope n) = InScope (mapVarEnv f in_scope) n
+
 elemInScopeSet :: Var -> InScopeSet -> Bool
 elemInScopeSet v (InScope in_scope n) = v `elemVarEnv` in_scope
 
@@ -286,17 +290,20 @@ plusVarEnv_C        :: (a -> a -> a) -> VarEnv a -> VarEnv a -> VarEnv a
 mapVarEnv        :: (a -> b) -> VarEnv a -> VarEnv b
 modifyVarEnv     :: (a -> a) -> VarEnv a -> Var -> VarEnv a
 varEnvElts       :: VarEnv a -> [a]
+varEnvKeys       :: VarEnv a -> [Unique]
                  
 isEmptyVarEnv    :: VarEnv a -> Bool
 lookupVarEnv     :: VarEnv a -> Var -> Maybe a
 lookupVarEnv_NF   :: VarEnv a -> Var -> a
 lookupWithDefaultVarEnv :: VarEnv a -> a -> Var -> a
 elemVarEnv       :: Var -> VarEnv a -> Bool
+elemVarEnvByKey   :: Unique -> VarEnv a -> Bool
 foldVarEnv       :: (a -> b -> b) -> b -> VarEnv a -> b
 \end{code}
 
 \begin{code}
 elemVarEnv       = elemUFM
+elemVarEnvByKey  = elemUFM_Directly
 extendVarEnv    = addToUFM
 extendVarEnv_C  = addToUFM_C
 extendVarEnvList = addListToUFM
@@ -310,6 +317,7 @@ mapVarEnv    = mapUFM
 mkVarEnv        = listToUFM
 emptyVarEnv     = emptyUFM
 varEnvElts      = eltsUFM
+varEnvKeys      = keysUFM
 unitVarEnv      = unitUFM
 isEmptyVarEnv   = isNullUFM
 foldVarEnv      = foldUFM