\begin{code}
module Module
(
- Module, moduleName
+ Module, moduleName, packageOfModule,
-- abstract, instance of Eq, Ord, Outputable
, ModuleName
, isModuleInThisPackage, mkModuleInThisPackage,
, moduleString -- :: Module -> EncodedString
, moduleUserString -- :: Module -> UserString
- , moduleName -- :: Module -> ModuleName
, mkVanillaModule -- :: ModuleName -> Module
, mkPrelModule -- :: UserString -> Module
, moduleEnvElts, unitModuleEnv, isEmptyModuleEnv, foldModuleEnv
, lookupModuleEnvByName, extendModuleEnv_C
+ , ModuleSet, emptyModuleSet, mkModuleSet, moduleSetElts, extendModuleSet, elemModuleSet
+
) where
#include "HsVersions.h"
import FastString ( FastString, uniqueOfFS )
import Unique ( Uniquable(..), mkUniqueGrimily )
import UniqFM
+import UniqSet
\end{code}
moduleString (Module (ModuleName fs) _) = _UNPK_ fs
moduleName :: Module -> ModuleName
-moduleName (Module mod _) = mod
+moduleName (Module mod pkg_info) = mod
moduleUserString :: Module -> UserString
moduleUserString (Module mod _) = moduleNameUserString mod
isModuleInThisPackage (Module nm ThisPackage) = True
isModuleInThisPackage _ = False
+packageOfModule :: Module -> Maybe PackageName
+packageOfModule (Module nm (AnotherPackage pn)) = Just pn
+packageOfModule _ = Nothing
+
printModulePrefix :: Module -> Bool
-- When printing, say M.x
printModulePrefix (Module nm ThisPackage) = False
isEmptyModuleEnv = isNullUFM
foldModuleEnv = foldUFM
\end{code}
+
+\begin{code}
+
+type ModuleSet = UniqSet Module
+mkModuleSet :: [Module] -> ModuleSet
+extendModuleSet :: ModuleSet -> Module -> ModuleSet
+emptyModuleSet :: ModuleSet
+moduleSetElts :: ModuleSet -> [Module]
+elemModuleSet :: Module -> ModuleSet -> Bool
+
+emptyModuleSet = emptyUniqSet
+mkModuleSet = mkUniqSet
+extendModuleSet = addOneToUniqSet
+moduleSetElts = uniqSetToList
+elemModuleSet = elementOfUniqSet
+\end{code}