refactoring only: use the parameterised InstalledPackageInfo
[ghc-hetmet.git] / compiler / main / PackageConfig.hs
index e19a10d..c070ca2 100644 (file)
@@ -4,30 +4,34 @@
 
 module PackageConfig (
        -- * PackageId
-       PackageId, 
-       mkPackageId, stringToPackageId, packageIdString, packageConfigId,
-       packageIdFS, fsToPackageId, 
+       mkPackageId, packageConfigId, unpackPackageId,
        
        -- * The PackageConfig type: information about a package
        PackageConfig,
-       InstalledPackageInfo(..), showPackageId,
+       InstalledPackageInfo_(..), showPackageId,
        Version(..),
        PackageIdentifier(..),
-       defaultPackageConfig
+       defaultPackageConfig,
   ) where
 
 #include "HsVersions.h"
 
+import Module 
 import Distribution.InstalledPackageInfo
 import Distribution.Package
 import Distribution.Version
-import FastString
+import Distribution.Compat.ReadP ( readP_to_S )
+
+-- warning suppression
+_unused :: FS.FastString
+_unused = FSLIT("")
 
 -- -----------------------------------------------------------------------------
 -- 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
+type PackageConfig = InstalledPackageInfo_ ModuleName
+defaultPackageConfig :: PackageConfig
 defaultPackageConfig = emptyInstalledPackageInfo
 
 -- -----------------------------------------------------------------------------
@@ -44,26 +48,15 @@ defaultPackageConfig = emptyInstalledPackageInfo
 --
 -- A PackageId is a string of the form <pkg>-<version>.
 
-newtype PackageId = PId FastString deriving( Eq, Ord )  -- includes the version
-       -- easier not to use a newtype here, because we need instances of
-       -- Binary & Outputable, and we're too early to define them
-
-fsToPackageId :: FastString -> PackageId
-fsToPackageId = PId
-
-packageIdFS :: PackageId -> FastString
-packageIdFS (PId fs) = fs
-
-stringToPackageId :: String -> PackageId
-stringToPackageId = fsToPackageId . mkFastString
-
-packageIdString :: PackageId -> String
-packageIdString = unpackFS . packageIdFS
-
 mkPackageId :: PackageIdentifier -> PackageId
 mkPackageId = stringToPackageId . showPackageId
 
 packageConfigId :: PackageConfig -> PackageId
 packageConfigId = mkPackageId . package
 
-
+unpackPackageId :: PackageId -> Maybe PackageIdentifier
+unpackPackageId p
+  = case [ pid | (pid,"") <- readP_to_S parsePackageId str ] of
+        []      -> Nothing
+        (pid:_) -> Just pid
+  where str = packageIdString p