X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2FbasicTypes%2FModule.lhs;h=7a2aa1b07284f7087d979da54b6554f00de78cb3;hb=96cf57e3ca14b3d9e6654a7780ea0b0ea4f5c0e8;hp=276a0e4e8b6cb30e396219786ee021a1cda9f4c1;hpb=73c0472d57af773f9920bf27547211d5c8785943;p=ghc-hetmet.git diff --git a/ghc/compiler/basicTypes/Module.lhs b/ghc/compiler/basicTypes/Module.lhs index 276a0e4..7a2aa1b 100644 --- a/ghc/compiler/basicTypes/Module.lhs +++ b/ghc/compiler/basicTypes/Module.lhs @@ -21,10 +21,9 @@ in a different DLL, by setting the DLL flag. \begin{code} module Module ( - Module, moduleName + Module, moduleName, packageOfModule, -- abstract, instance of Eq, Ord, Outputable , ModuleName - , isModuleInThisPackage, mkModuleInThisPackage, , printModulePrefix , moduleNameString -- :: ModuleName -> EncodedString @@ -33,14 +32,12 @@ module Module , 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 @@ -60,6 +57,8 @@ module Module , moduleEnvElts, unitModuleEnv, isEmptyModuleEnv, foldModuleEnv , lookupModuleEnvByName, extendModuleEnv_C + , ModuleSet, emptyModuleSet, mkModuleSet, moduleSetElts, extendModuleSet, elemModuleSet + ) where #include "HsVersions.h" @@ -69,6 +68,7 @@ import CmdLineOpts ( opt_InPackage ) import FastString ( FastString, uniqueOfFS ) import Unique ( Uniquable(..), mkUniqueGrimily ) import UniqFM +import UniqSet \end{code} @@ -190,10 +190,6 @@ mkModuleNameFS s = ModuleName (encodeFS s) -- 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} @@ -239,6 +235,10 @@ mkModule mod_nm pack_name 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.) @@ -252,14 +252,14 @@ moduleString :: Module -> EncodedString 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 @@ -317,3 +317,19 @@ unitModuleEnv = unitUFM 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}