diff options
author | Austin Seipp <austin@well-typed.com> | 2014-08-20 03:45:15 -0500 |
---|---|---|
committer | Austin Seipp <austin@well-typed.com> | 2014-08-20 03:47:36 -0500 |
commit | 1ad35f4c52a9e5727a009531c1241dba4ba389bd (patch) | |
tree | f60e771b69fc92134129f0be761850a94ee80613 | |
parent | 99f6224aef23750eba29e6f312710bd419494be2 (diff) | |
download | haskell-1ad35f4c52a9e5727a009531c1241dba4ba389bd.tar.gz |
basicTypes: detabify/dewhitespace NameSet
Signed-off-by: Austin Seipp <austin@well-typed.com>
-rw-r--r-- | compiler/basicTypes/NameSet.lhs | 127 |
1 files changed, 60 insertions, 67 deletions
diff --git a/compiler/basicTypes/NameSet.lhs b/compiler/basicTypes/NameSet.lhs index 9cd9fcef93..f871d1e650 100644 --- a/compiler/basicTypes/NameSet.lhs +++ b/compiler/basicTypes/NameSet.lhs @@ -5,36 +5,29 @@ \begin{code} {-# LANGUAGE CPP #-} -{-# OPTIONS_GHC -fno-warn-tabs #-} --- The above warning supression flag is a temporary kludge. --- While working on this module you are encouraged to remove it and --- detab the module (please do the detabbing in a separate patch). See --- http://ghc.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#TabsvsSpaces --- for details - module NameSet ( - -- * Names set type - NameSet, - - -- ** Manipulating these sets - emptyNameSet, unitNameSet, mkNameSet, unionNameSets, unionManyNameSets, - minusNameSet, elemNameSet, nameSetToList, addOneToNameSet, addListToNameSet, - delFromNameSet, delListFromNameSet, isEmptyNameSet, foldNameSet, filterNameSet, - intersectsNameSet, intersectNameSet, - - -- * Free variables - FreeVars, - - -- ** Manipulating sets of free variables - isEmptyFVs, emptyFVs, plusFVs, plusFV, - mkFVs, addOneFV, unitFV, delFV, delFVs, - - -- * Defs and uses - Defs, Uses, DefUse, DefUses, - - -- ** Manipulating defs and uses - emptyDUs, usesOnly, mkDUs, plusDU, - findUses, duDefs, duUses, allUses + -- * Names set type + NameSet, + + -- ** Manipulating these sets + emptyNameSet, unitNameSet, mkNameSet, unionNameSets, unionManyNameSets, + minusNameSet, elemNameSet, nameSetToList, addOneToNameSet, addListToNameSet, + delFromNameSet, delListFromNameSet, isEmptyNameSet, foldNameSet, filterNameSet, + intersectsNameSet, intersectNameSet, + + -- * Free variables + FreeVars, + + -- ** Manipulating sets of free variables + isEmptyFVs, emptyFVs, plusFVs, plusFV, + mkFVs, addOneFV, unitFV, delFV, delFVs, + + -- * Defs and uses + Defs, Uses, DefUse, DefUses, + + -- ** Manipulating defs and uses + emptyDUs, usesOnly, mkDUs, plusDU, + findUses, duDefs, duUses, allUses ) where #include "HsVersions.h" @@ -44,48 +37,48 @@ import UniqSet \end{code} %************************************************************************ -%* * +%* * \subsection[Sets of names} -%* * +%* * %************************************************************************ \begin{code} type NameSet = UniqSet Name emptyNameSet :: NameSet -unitNameSet :: Name -> NameSet +unitNameSet :: Name -> NameSet addListToNameSet :: NameSet -> [Name] -> NameSet addOneToNameSet :: NameSet -> Name -> NameSet mkNameSet :: [Name] -> NameSet -unionNameSets :: NameSet -> NameSet -> NameSet +unionNameSets :: NameSet -> NameSet -> NameSet unionManyNameSets :: [NameSet] -> NameSet -minusNameSet :: NameSet -> NameSet -> NameSet -elemNameSet :: Name -> NameSet -> Bool -nameSetToList :: NameSet -> [Name] -isEmptyNameSet :: NameSet -> Bool -delFromNameSet :: NameSet -> Name -> NameSet +minusNameSet :: NameSet -> NameSet -> NameSet +elemNameSet :: Name -> NameSet -> Bool +nameSetToList :: NameSet -> [Name] +isEmptyNameSet :: NameSet -> Bool +delFromNameSet :: NameSet -> Name -> NameSet delListFromNameSet :: NameSet -> [Name] -> NameSet -foldNameSet :: (Name -> b -> b) -> b -> NameSet -> b -filterNameSet :: (Name -> Bool) -> NameSet -> NameSet +foldNameSet :: (Name -> b -> b) -> b -> NameSet -> b +filterNameSet :: (Name -> Bool) -> NameSet -> NameSet intersectNameSet :: NameSet -> NameSet -> NameSet intersectsNameSet :: NameSet -> NameSet -> Bool -- ^ True if there is a non-empty intersection. -- @s1 `intersectsNameSet` s2@ doesn't compute @s2@ if @s1@ is empty isEmptyNameSet = isEmptyUniqSet -emptyNameSet = emptyUniqSet -unitNameSet = unitUniqSet +emptyNameSet = emptyUniqSet +unitNameSet = unitUniqSet mkNameSet = mkUniqSet addListToNameSet = addListToUniqSet -addOneToNameSet = addOneToUniqSet +addOneToNameSet = addOneToUniqSet unionNameSets = unionUniqSets unionManyNameSets = unionManyUniqSets -minusNameSet = minusUniqSet +minusNameSet = minusUniqSet elemNameSet = elementOfUniqSet nameSetToList = uniqSetToList delFromNameSet = delOneFromUniqSet -foldNameSet = foldUniqSet -filterNameSet = filterUniqSet +foldNameSet = foldUniqSet +filterNameSet = filterUniqSet intersectNameSet = intersectUniqSets delListFromNameSet set ns = foldl delFromNameSet set ns @@ -95,22 +88,22 @@ intersectsNameSet s1 s2 = not (isEmptyNameSet (s1 `intersectNameSet` s2)) %************************************************************************ -%* * +%* * \subsection{Free variables} -%* * +%* * %************************************************************************ These synonyms are useful when we are thinking of free variables \begin{code} -type FreeVars = NameSet +type FreeVars = NameSet plusFV :: FreeVars -> FreeVars -> FreeVars addOneFV :: FreeVars -> Name -> FreeVars unitFV :: Name -> FreeVars emptyFVs :: FreeVars plusFVs :: [FreeVars] -> FreeVars -mkFVs :: [Name] -> FreeVars +mkFVs :: [Name] -> FreeVars delFV :: Name -> FreeVars -> FreeVars delFVs :: [Name] -> FreeVars -> FreeVars @@ -119,7 +112,7 @@ isEmptyFVs = isEmptyNameSet emptyFVs = emptyNameSet plusFVs = unionManyNameSets plusFV = unionNameSets -mkFVs = mkNameSet +mkFVs = mkNameSet addOneFV = addOneToNameSet unitFV = unitNameSet delFV n s = delFromNameSet s n @@ -128,9 +121,9 @@ delFVs ns s = delListFromNameSet s ns %************************************************************************ -%* * - Defs and uses -%* * +%* * + Defs and uses +%* * %************************************************************************ \begin{code} @@ -145,8 +138,8 @@ type Uses = NameSet -- Also, @us@ may mention @ds@. -- -- @Nothing =>@ Nothing is defined in this group, but --- nevertheless all the uses are essential. --- Used for instance declarations, for example +-- nevertheless all the uses are essential. +-- Used for instance declarations, for example type DefUse = (Maybe Defs, Uses) -- | A number of 'DefUse's in dependency order: earlier 'Defs' scope over later 'Uses' @@ -184,23 +177,23 @@ duUses dus = foldr get emptyNameSet dus where get (Nothing, rhs_uses) uses = rhs_uses `unionNameSets` uses get (Just defs, rhs_uses) uses = (rhs_uses `unionNameSets` uses) - `minusNameSet` defs + `minusNameSet` defs findUses :: DefUses -> Uses -> Uses -- ^ Given some 'DefUses' and some 'Uses', find all the uses, transitively. --- The result is a superset of the input 'Uses'; and includes things defined +-- The result is a superset of the input 'Uses'; and includes things defined -- in the input 'DefUses' (but only if they are used) -findUses dus uses +findUses dus uses = foldr get uses dus where get (Nothing, rhs_uses) uses - = rhs_uses `unionNameSets` uses + = rhs_uses `unionNameSets` uses get (Just defs, rhs_uses) uses - | defs `intersectsNameSet` uses -- Used - || any (startsWithUnderscore . nameOccName) (nameSetToList defs) - -- At least one starts with an "_", - -- so treat the group as used - = rhs_uses `unionNameSets` uses - | otherwise -- No def is used - = uses + | defs `intersectsNameSet` uses -- Used + || any (startsWithUnderscore . nameOccName) (nameSetToList defs) + -- At least one starts with an "_", + -- so treat the group as used + = rhs_uses `unionNameSets` uses + | otherwise -- No def is used + = uses \end{code} |