Make dph-seq and dph-par wired-in packages
[ghc-hetmet.git] / compiler / main / PackageConfig.hs
index c070ca2..a93a7e5 100644 (file)
@@ -8,29 +8,30 @@ module PackageConfig (
        
        -- * The PackageConfig type: information about a package
        PackageConfig,
-       InstalledPackageInfo_(..), showPackageId,
+       InstalledPackageInfo_(..), display,
        Version(..),
        PackageIdentifier(..),
        defaultPackageConfig,
+    packageConfigToInstalledPackageInfo,
+    installedPackageInfoToPackageConfig,
   ) where
 
 #include "HsVersions.h"
 
-import Module 
+import Data.Maybe
+import Module
 import Distribution.InstalledPackageInfo
+import Distribution.ModuleName
 import Distribution.Package
+import Distribution.Text
 import Distribution.Version
-import Distribution.Compat.ReadP ( readP_to_S )
-
--- warning suppression
-_unused :: FS.FastString
-_unused = FSLIT("")
+import Distribution.Compat.ReadP
 
 -- -----------------------------------------------------------------------------
 -- Our PackageConfig type is just InstalledPackageInfo from Cabal.  Later we
 -- might need to extend it with some GHC-specific stuff, but for now it's fine.
 
-type PackageConfig = InstalledPackageInfo_ ModuleName
+type PackageConfig = InstalledPackageInfo_ Module.ModuleName
 defaultPackageConfig :: PackageConfig
 defaultPackageConfig = emptyInstalledPackageInfo
 
@@ -49,14 +50,32 @@ defaultPackageConfig = emptyInstalledPackageInfo
 -- A PackageId is a string of the form <pkg>-<version>.
 
 mkPackageId :: PackageIdentifier -> PackageId
-mkPackageId = stringToPackageId . showPackageId
+mkPackageId = stringToPackageId . display
 
 packageConfigId :: PackageConfig -> PackageId
 packageConfigId = mkPackageId . package
 
 unpackPackageId :: PackageId -> Maybe PackageIdentifier
 unpackPackageId p
-  = case [ pid | (pid,"") <- readP_to_S parsePackageId str ] of
+  = case [ pid | (pid,"") <- readP_to_S parse str ] of
         []      -> Nothing
         (pid:_) -> Just pid
   where str = packageIdString p
+
+packageConfigToInstalledPackageInfo :: PackageConfig -> InstalledPackageInfo
+packageConfigToInstalledPackageInfo
+    (pkgconf@(InstalledPackageInfo { exposedModules = e,
+                                     hiddenModules = h })) =
+        pkgconf{ exposedModules = map convert e,
+                 hiddenModules  = map convert h }
+    where convert :: Module.ModuleName -> Distribution.ModuleName.ModuleName
+          convert = fromJust . simpleParse . moduleNameString
+
+installedPackageInfoToPackageConfig :: InstalledPackageInfo -> PackageConfig
+installedPackageInfoToPackageConfig
+    (pkgconf@(InstalledPackageInfo { exposedModules = e,
+                                     hiddenModules = h })) =
+        pkgconf{ exposedModules = map convert e,
+                 hiddenModules  = map convert h }
+    where convert :: Distribution.ModuleName.ModuleName -> Module.ModuleName
+          convert = mkModuleName . display