[commit: ghc] master: Respect the ordering of -package directives (574ccfa)
git at git.haskell.org
git at git.haskell.org
Mon Dec 2 02:39:14 UTC 2013
Repository : ssh://git@git.haskell.org/ghc
On branch : master
Link : http://ghc.haskell.org/trac/ghc/changeset/574ccfa231ca05d03d1da9d31e5bc81e74cc5e1e/ghc
>---------------------------------------------------------------
commit 574ccfa231ca05d03d1da9d31e5bc81e74cc5e1e
Author: Patrick Palka <patrick at parcs.ath.cx>
Date: Tue Nov 26 11:46:59 2013 -0500
Respect the ordering of -package directives
>---------------------------------------------------------------
574ccfa231ca05d03d1da9d31e5bc81e74cc5e1e
compiler/main/Packages.lhs | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/compiler/main/Packages.lhs b/compiler/main/Packages.lhs
index aefb536..df5eddb 100644
--- a/compiler/main/Packages.lhs
+++ b/compiler/main/Packages.lhs
@@ -59,6 +59,7 @@ import System.FilePath as FilePath
import qualified System.FilePath.Posix as FilePath.Posix
import Control.Monad
import Data.Char (isSpace)
+import Data.Foldable (foldrM)
import Data.List as List
import Data.Map (Map)
import qualified Data.Map as Map
@@ -980,7 +981,7 @@ getPreloadPackagesAnd dflags pkgids =
preload = preloadPackages state
pairs = zip pkgids (repeat Nothing)
in do
- all_pkgs <- throwErr dflags (foldM (add_package pkg_map ipid_map) preload pairs)
+ all_pkgs <- throwErr dflags (foldrM (add_package pkg_map ipid_map) preload pairs)
return (map (getPackageDetails state) all_pkgs)
-- Takes a list of packages, and returns the list with dependencies included,
@@ -1003,15 +1004,15 @@ closeDepsErr :: PackageConfigMap
-> Map InstalledPackageId PackageId
-> [(PackageId,Maybe PackageId)]
-> MaybeErr MsgDoc [PackageId]
-closeDepsErr pkg_map ipid_map ps = foldM (add_package pkg_map ipid_map) [] ps
+closeDepsErr pkg_map ipid_map ps = foldrM (add_package pkg_map ipid_map) [] ps
-- internal helper
add_package :: PackageConfigMap
-> Map InstalledPackageId PackageId
- -> [PackageId]
-> (PackageId,Maybe PackageId)
+ -> [PackageId]
-> MaybeErr MsgDoc [PackageId]
-add_package pkg_db ipid_map ps (p, mb_parent)
+add_package pkg_db ipid_map (p, mb_parent) ps
| p `elem` ps = return ps -- Check if we've already added this package
| otherwise =
case lookupPackage pkg_db p of
@@ -1019,12 +1020,12 @@ add_package pkg_db ipid_map ps (p, mb_parent)
missingDependencyMsg mb_parent)
Just pkg -> do
-- Add the package's dependents also
- ps' <- foldM add_package_ipid ps (depends pkg)
+ ps' <- foldrM add_package_ipid ps (depends pkg)
return (p : ps')
where
- add_package_ipid ps ipid@(InstalledPackageId str)
+ add_package_ipid ipid@(InstalledPackageId str) ps
| Just pid <- Map.lookup ipid ipid_map
- = add_package pkg_db ipid_map ps (pid, Just p)
+ = add_package pkg_db ipid_map (pid, Just p) ps
| otherwise
= Failed (missingPackageMsg str <> missingDependencyMsg mb_parent)
More information about the ghc-commits
mailing list