X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FbasicTypes%2FModule.lhs;h=fcfcbb11568f435c9dc8afe0c3ab96c184044e1b;hb=f3a381ed3888bf634e91400e52204ab2252567d2;hp=f6b8b8342a7021e93e2cc09e3682567011b9825f;hpb=1a7d1b77334529ca96ed4cbc03fcb5f55dc2de4a;p=ghc-hetmet.git diff --git a/compiler/basicTypes/Module.lhs b/compiler/basicTypes/Module.lhs index f6b8b83..fcfcbb1 100644 --- a/compiler/basicTypes/Module.lhs +++ b/compiler/basicTypes/Module.lhs @@ -16,6 +16,7 @@ module Module pprModuleName, moduleNameFS, moduleNameString, + moduleNameSlashes, mkModuleName, mkModuleNameFS, @@ -27,6 +28,8 @@ module Module packageIdString, -- * Wired-in PackageIds + primPackageId, + integerPackageId, basePackageId, rtsPackageId, haskell98PackageId, @@ -50,8 +53,8 @@ module Module extendModuleEnvList_C, plusModuleEnv_C, delModuleEnvList, delModuleEnv, plusModuleEnv, lookupModuleEnv, lookupWithDefaultModuleEnv, mapModuleEnv, mkModuleEnv, emptyModuleEnv, - moduleEnvElts, unitModuleEnv, isEmptyModuleEnv, foldModuleEnv, - extendModuleEnv_C, filterModuleEnv, + moduleEnvKeys, moduleEnvElts, unitModuleEnv, isEmptyModuleEnv, + foldModuleEnv, extendModuleEnv_C, filterModuleEnv, -- * ModuleName mappings ModuleNameEnv, @@ -66,9 +69,11 @@ import Outputable import qualified Pretty import Unique import FiniteMap -import UniqFM +import LazyUniqFM import FastString import Binary + +import System.FilePath \end{code} %************************************************************************ @@ -173,6 +178,11 @@ mkModuleName s = ModuleName (mkFastString s) mkModuleNameFS :: FastString -> ModuleName mkModuleNameFS s = ModuleName s + +-- Returns the string version of the module name, with dots replaced by slashes +moduleNameSlashes :: ModuleName -> String +moduleNameSlashes = dots_to_slashes . moduleNameString + where dots_to_slashes = map (\c -> if c == '.' then pathSeparator else c) \end{code} %************************************************************************ @@ -269,8 +279,11 @@ packageIdString = unpackFS . packageIdFS -- package that depends directly or indirectly on it (much as if you -- had used -ignore-package). -basePackageId, rtsPackageId, haskell98PackageId, +integerPackageId, primPackageId, + basePackageId, rtsPackageId, haskell98PackageId, thPackageId, ndpPackageId, mainPackageId :: PackageId +primPackageId = fsToPackageId FSLIT("ghc-prim") +integerPackageId = fsToPackageId FSLIT("integer") basePackageId = fsToPackageId FSLIT("base") rtsPackageId = fsToPackageId FSLIT("rts") haskell98PackageId = fsToPackageId FSLIT("haskell98") @@ -305,6 +318,7 @@ delModuleEnvList :: ModuleEnv a -> [Module] -> ModuleEnv a delModuleEnv :: ModuleEnv a -> Module -> ModuleEnv a plusModuleEnv_C :: (a -> a -> a) -> ModuleEnv a -> ModuleEnv a -> ModuleEnv a mapModuleEnv :: (a -> b) -> ModuleEnv a -> ModuleEnv b +moduleEnvKeys :: ModuleEnv a -> [Module] moduleEnvElts :: ModuleEnv a -> [a] isEmptyModuleEnv :: ModuleEnv a -> Bool @@ -329,6 +343,7 @@ lookupWithDefaultModuleEnv = lookupWithDefaultFM mapModuleEnv f = mapFM (\_ v -> f v) mkModuleEnv = listToFM emptyModuleEnv = emptyFM +moduleEnvKeys = keysFM moduleEnvElts = eltsFM unitModuleEnv = unitFM isEmptyModuleEnv = isEmptyFM