RE: [commit: ghc] master: Respect the ordering of -package directives (574ccfa)
Patrick Thanks! When you do something subtle like change 'foldM' to 'foldrM', could you add a comment to point out the subtlety? After all, by definition this was something that someone else missed. Simon | -----Original Message----- | From: ghc-commits [mailto:ghc-commits-bounces@haskell.org] On Behalf Of | git@git.haskell.org | Sent: 02 December 2013 02:39 | To: ghc-commits@haskell.org | Subject: [commit: ghc] master: Respect the ordering of -package | directives (574ccfa) | | Repository : ssh://git@git.haskell.org/ghc | | On branch : master | Link : | http://ghc.haskell.org/trac/ghc/changeset/574ccfa231ca05d03d1da9d31e5bc | 81e74cc5e1e/ghc | | >--------------------------------------------------------------- | | commit 574ccfa231ca05d03d1da9d31e5bc81e74cc5e1e | Author: Patrick Palka <patrick@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) | | | _______________________________________________ | ghc-commits mailing list | ghc-commits@haskell.org | http://www.haskell.org/mailman/listinfo/ghc-commits
On Mon, Dec 2, 2013 at 5:28 AM, Simon Peyton-Jones <simonpj@microsoft.com> wrote:
Patrick
Thanks!
When you do something subtle like change 'foldM' to 'foldrM', could you add a comment to point out the subtlety? After all, by definition this was something that someone else missed.
Simon
Yes, will do. This commit was accidentally pushed and reverted shortly afterwards. Sorry about that.
participants (2)
-
Patrick Palka -
Simon Peyton-Jones