Fix warnings in basicTypes/VarSet
[ghc-hetmet.git] / compiler / basicTypes / Module.lhs
index f6b8b83..fcfcbb1 100644 (file)
@@ -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