\begin{code}
module Module
(
- Module, moduleName
+ Module, moduleName, packageOfModule,
-- abstract, instance of Eq, Ord, Outputable
, ModuleName
- , isModuleInThisPackage, mkModuleInThisPackage,
, printModulePrefix
, moduleNameString -- :: ModuleName -> EncodedString
, moduleString -- :: Module -> EncodedString
, moduleUserString -- :: Module -> UserString
- , moduleName -- :: Module -> ModuleName
, mkVanillaModule -- :: ModuleName -> Module
, mkPrelModule -- :: UserString -> Module
, mkModule -- :: ModuleName -> PackageName -> Module
, mkHomeModule -- :: ModuleName -> Module
-
--- , mkSrcModule
+ , isHomeModule -- :: Module -> Bool
, mkModuleName -- :: UserString -> ModuleName
, mkModuleNameFS -- :: UserFS -> ModuleName
, 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}
-- used to be called mkSysModuleFS
mkSysModuleNameFS :: EncodedFS -> ModuleName
mkSysModuleNameFS s = ModuleName s
-
--- Make a module in this package
-mkModuleInThisPackage :: ModuleName -> Module
-mkModuleInThisPackage nm = Module nm ThisPackage
\end{code}
\begin{code}
mkHomeModule :: ModuleName -> Module
mkHomeModule mod_nm = Module mod_nm ThisPackage
+isHomeModule :: Module -> Bool
+isHomeModule (Module nm ThisPackage) = True
+isHomeModule _ = False
+
-- Used temporarily when we first come across Foo.x in an interface
-- file, but before we've opened Foo.hi.
-- (Until we've opened Foo.hi we don't know what the PackageInfo is.)
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 -> Bool
-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
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}