Repository : ssh://darcs.haskell.org//srv/darcs/ghc

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/62164cf56bd91ddd9449d345f8d710fbbdbf4827

>---------------------------------------------------------------

commit 62164cf56bd91ddd9449d345f8d710fbbdbf4827
Author: Simon Marlow <[email protected]>
Date:   Mon Jul 2 15:04:05 2012 +0100

    -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.

>---------------------------------------------------------------

 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 9831367..5bea131 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 _                   = []
 



_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to