pprModuleName,
moduleNameFS,
moduleNameString,
+ moduleNameSlashes,
mkModuleName,
mkModuleNameFS,
packageIdString,
-- * Wired-in PackageIds
+ primPackageId,
+ integerPackageId,
basePackageId,
rtsPackageId,
haskell98PackageId,
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,
elemModuleSet
) where
-#include "HsVersions.h"
import Outputable
import qualified Pretty
import Unique
import FiniteMap
-import UniqFM
+import LazyUniqFM
import FastString
import Binary
+
+import System.FilePath
\end{code}
%************************************************************************
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}
%************************************************************************
-- 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
-basePackageId = fsToPackageId FSLIT("base")
-rtsPackageId = fsToPackageId FSLIT("rts")
-haskell98PackageId = fsToPackageId FSLIT("haskell98")
-thPackageId = fsToPackageId FSLIT("template-haskell")
-ndpPackageId = fsToPackageId FSLIT("ndp")
+primPackageId = fsToPackageId (fsLit "ghc-prim")
+integerPackageId = fsToPackageId (fsLit "integer")
+basePackageId = fsToPackageId (fsLit "base")
+rtsPackageId = fsToPackageId (fsLit "rts")
+haskell98PackageId = fsToPackageId (fsLit "haskell98")
+thPackageId = fsToPackageId (fsLit "template-haskell")
+ndpPackageId = fsToPackageId (fsLit "ndp")
-- This is the package Id for the program. It is the default package
-- Id if you don't specify a package name. We don't add this prefix
-- to symbol name, since there can be only one main package per program.
-mainPackageId = fsToPackageId FSLIT("main")
+mainPackageId = fsToPackageId (fsLit "main")
\end{code}
%************************************************************************
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
mapModuleEnv f = mapFM (\_ v -> f v)
mkModuleEnv = listToFM
emptyModuleEnv = emptyFM
+moduleEnvKeys = keysFM
moduleEnvElts = eltsFM
unitModuleEnv = unitFM
isEmptyModuleEnv = isEmptyFM