diff options
author | Simon Marlow <marlowsd@gmail.com> | 2012-07-02 15:04:05 +0100 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2012-07-02 15:04:05 +0100 |
commit | 62164cf56bd91ddd9449d345f8d710fbbdbf4827 (patch) | |
tree | 6895bb96b0b843b9e835e325581fa53cbbc23696 | |
parent | 330769c9ca21c2fb37e8273283832ec0e9a6c117 (diff) | |
download | haskell-62164cf56bd91ddd9449d345f8d710fbbdbf4827.tar.gz |
-package P was loading all versions of P in GHCi (#7030)
-package P means "the latest version of P" if multiple versions are
installed. It was working as advertised, but we were
eagerly *linking* all versions of P, which might cause an error if the
package has some C code, because we can't link multiple instances of
the same symbol.
-rw-r--r-- | compiler/main/Packages.lhs | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/compiler/main/Packages.lhs b/compiler/main/Packages.lhs index 9831367fff..5bea131088 100644 --- a/compiler/main/Packages.lhs +++ b/compiler/main/Packages.lhs @@ -767,7 +767,9 @@ mkPackageState dflags pkgs0 preload0 this_package = do -- let preload1 = [ installedPackageId p | f <- flags, p <- get_exposed f ] - get_exposed (ExposePackage s) = filter (matchingStr s) pkgs2 + get_exposed (ExposePackage s) + = take 1 $ sortByVersion (filter (matchingStr s) pkgs2) + -- -package P means "the latest version of P" (#7030) get_exposed (ExposePackageId s) = filter (matchingId s) pkgs2 get_exposed _ = [] |