diff options
Diffstat (limited to 'compiler')
| -rw-r--r-- | compiler/basicTypes/Module.hs | 7 | ||||
| -rw-r--r-- | compiler/main/PackageConfig.hs | 26 | ||||
| -rw-r--r-- | compiler/main/Packages.hs | 10 |
3 files changed, 16 insertions, 27 deletions
diff --git a/compiler/basicTypes/Module.hs b/compiler/basicTypes/Module.hs index 00511474f4..27b4f5e0b1 100644 --- a/compiler/basicTypes/Module.hs +++ b/compiler/basicTypes/Module.hs @@ -11,6 +11,7 @@ the keys. {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE RecordWildCards #-} +{-# LANGUAGE MultiParamTypeClasses #-} module Module ( @@ -87,7 +88,7 @@ import FastString import Binary import Util import {-# SOURCE #-} Packages -import GHC.PackageDb (BinaryStringRep(..)) +import GHC.PackageDb (BinaryStringRep(..), DbModuleRep(..), DbModule(..)) import Data.Data import Data.Map (Map) @@ -371,6 +372,10 @@ class ContainsModule t where class HasModule m where getModule :: m Module +instance DbModuleRep UnitId ModuleName Module where + fromDbModule (DbModule uid mod_name) = mkModule uid mod_name + toDbModule mod = DbModule (moduleUnitId mod) (moduleName mod) + {- ************************************************************************ * * diff --git a/compiler/main/PackageConfig.hs b/compiler/main/PackageConfig.hs index b19257bcea..cda8f7f12c 100644 --- a/compiler/main/PackageConfig.hs +++ b/compiler/main/PackageConfig.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE CPP, RecordWildCards #-} +{-# LANGUAGE CPP, RecordWildCards, MultiParamTypeClasses #-} -- | -- Package configuration information: essentially the interface to Cabal, with @@ -44,6 +44,7 @@ type PackageConfig = InstalledPackageInfo PackageName Module.UnitId Module.ModuleName + Module.Module -- TODO: there's no need for these to be FastString, as we don't need the uniq -- feature, but ghc doesn't currently have convenient support for any @@ -83,22 +84,6 @@ instance Outputable SourcePackageId where instance Outputable PackageName where ppr (PackageName str) = ftext str --- | Pretty-print an 'ExposedModule' in the same format used by the textual --- installed package database. -pprExposedModule :: (Outputable a, Outputable b) => ExposedModule a b -> SDoc -pprExposedModule (ExposedModule exposedName exposedReexport) = - sep [ ppr exposedName - , case exposedReexport of - Just m -> sep [text "from", pprOriginalModule m] - Nothing -> empty - ] - --- | Pretty-print an 'OriginalModule' in the same format used by the textual --- installed package database. -pprOriginalModule :: (Outputable a, Outputable b) => OriginalModule a b -> SDoc -pprOriginalModule (OriginalModule originalPackageId originalModuleName) = - ppr originalPackageId <> char ':' <> ppr originalModuleName - defaultPackageConfig :: PackageConfig defaultPackageConfig = emptyInstalledPackageInfo @@ -119,10 +104,7 @@ pprPackageConfig InstalledPackageInfo {..} = field "version" (text (showVersion packageVersion)), field "id" (ppr unitId), field "exposed" (ppr exposed), - field "exposed-modules" - (if all isExposedModule exposedModules - then fsep (map pprExposedModule exposedModules) - else pprWithCommas pprExposedModule exposedModules), + field "exposed-modules" (ppr exposedModules), field "hidden-modules" (fsep (map ppr hiddenModules)), field "trusted" (ppr trusted), field "import-dirs" (fsep (map text importDirs)), @@ -142,8 +124,6 @@ pprPackageConfig InstalledPackageInfo {..} = ] where field name body = text name <> colon <+> nest 4 body - isExposedModule (ExposedModule _ Nothing) = True - isExposedModule _ = False -- ----------------------------------------------------------------------------- diff --git a/compiler/main/Packages.hs b/compiler/main/Packages.hs index 0a8b279374..3c646a5a5d 100644 --- a/compiler/main/Packages.hs +++ b/compiler/main/Packages.hs @@ -768,8 +768,12 @@ findWiredInPackages dflags pkgs vis_map = do | otherwise = pkg upd_deps pkg = pkg { - depends = map upd_wired_in (depends pkg) + depends = map upd_wired_in (depends pkg), + exposedModules + = map (\(k,v) -> (k, fmap upd_wired_in_mod v)) + (exposedModules pkg) } + upd_wired_in_mod (Module uid m) = Module (upd_wired_in uid) m upd_wired_in key | Just key' <- Map.lookup key wiredInMap = key' | otherwise = key @@ -1155,11 +1159,11 @@ mkModuleToPkgConfAll dflags pkg_db vis_map = es :: Bool -> [(ModuleName, Map Module ModuleOrigin)] es e = do - ExposedModule m exposedReexport <- exposed_mods + (m, exposedReexport) <- exposed_mods let (pk', m', pkg', origin') = case exposedReexport of Nothing -> (pk, m, pkg, fromExposedModules e) - Just (OriginalModule pk' m') -> + Just (Module pk' m') -> let pkg' = pkg_lookup pk' in (pk', m', pkg', fromReexportedModules e pkg') return (m, sing pk' m' pkg' origin') |
