\begin{code}
module VarSet (
- VarSet, IdSet, TyVarSet, IdOrTyVarSet, UVarSet,
+ VarSet, IdSet, TyVarSet, UVarSet,
emptyVarSet, unitVarSet, mkVarSet,
extendVarSet,
elemVarSet, varSetElems, subVarSet,
intersectVarSet, intersectsVarSet,
isEmptyVarSet, delVarSet, delVarSetByKey,
minusVarSet, foldVarSet, filterVarSet,
- lookupVarSet, mapVarSet, sizeVarSet, seqVarSet,
-
- uniqAway
+ lookupVarSet, mapVarSet, sizeVarSet, seqVarSet
) where
#include "HsVersions.h"
import CmdLineOpts ( opt_PprStyle_Debug )
-import Var ( Var, Id, TyVar, UVar, IdOrTyVar, setVarUnique )
-import Unique ( Unique, Uniquable(..), incrUnique, deriveUnique )
+import Var ( Var, Id, TyVar, UVar, setVarUnique )
+import Unique ( Unique, Uniquable(..) )
import UniqSet
import UniqFM ( delFromUFM_Directly )
import Outputable
type VarSet = UniqSet Var
type IdSet = UniqSet Id
type TyVarSet = UniqSet TyVar
-type IdOrTyVarSet = UniqSet IdOrTyVar
type UVarSet = UniqSet UVar
emptyVarSet :: VarSet
seqVarSet s = sizeVarSet s `seq` ()
\end{code}
-\begin{code}
-uniqAway :: VarSet -> Var -> Var
--- Give the Var a new unique, different to any in the VarSet
-uniqAway set var
- | not (var `elemVarSet` set) = var -- Nothing to do
-
- | otherwise
- = try 1 (deriveUnique (getUnique var) (hashUniqSet set))
- where
- try n uniq | uniq `elemUniqSet_Directly` set = try ((n+1)::Int) (incrUnique uniq)
-#ifdef DEBUG
- | opt_PprStyle_Debug && n > 3
- = pprTrace "uniqAway:" (ppr n <+> text "tries" <+> ppr var)
- setVarUnique var uniq
-#endif
- | otherwise = setVarUnique var uniq
-\end{code}