Merge branch 'master' of ssh://darcs.haskell.org/srv/darcs/ghc
authorMax Bolingbroke <batterseapower@hotmail.com>
Sun, 3 Apr 2011 15:55:20 +0000 (16:55 +0100)
committerMax Bolingbroke <batterseapower@hotmail.com>
Sun, 3 Apr 2011 15:55:20 +0000 (16:55 +0100)
boot
boot-pkgs
compiler/ghci/Linker.lhs

diff --git a/boot b/boot
index f47bdf6..ae57381 100755 (executable)
--- a/boot
+++ b/boot
@@ -43,13 +43,13 @@ while (<PACKAGES>) {
         # If $tag is not "-" then it is an optional repository, so its
         # absence isn't an error.
         if (defined($required_tag{$tag})) {
-            # We would like to just check for an _darcs directory here,
-            # but in an lndir tree we avoid making _darcs directories,
+            # We would like to just check for a .git directory here,
+            # but in an lndir tree we avoid making .git directories,
             # so it doesn't exist. We therefore require that every repo
             # has a LICENSE file instead.
             if (! -f "$dir/LICENSE") {
                 print STDERR "Error: $dir/LICENSE doesn't exist.\n";
-                die "Maybe you haven't done './darcs-all get'?";
+                die "Maybe you haven't done './sync-all get'?";
             }
         }
     }
@@ -70,10 +70,3 @@ foreach $dir (".", glob("libraries/*/")) {
     }
 }
 
-# Alas, darcs doesn't handle file permissions, so fix a few of them.
-for my $file ("boot", "darcs-all", "validate") {
-    if (-f $file) {
-        chmod 0755, $file
-            or die "Can't chmod 0755 $file: $!";
-    }
-}
index b613828..6acea11 100644 (file)
--- a/boot-pkgs
+++ b/boot-pkgs
@@ -25,6 +25,9 @@ for $tarball (@tarballs) {
     if (-d "libraries/$package/_darcs") {
         print "Ignoring libraries/$package as it looks like a darcs checkout\n"
     }
+    elsif (-d "libraries/$package/.git") {
+        print "Ignoring libraries/$package as it looks like a git checkout\n"
+    }
     else {
         if (! -d "libraries/stamp") {
             mkdir "libraries/stamp";
index bd0bb35..eaf4521 100644 (file)
@@ -245,11 +245,18 @@ dataConInfoPtrToName x = do
          where
          (modWords, occWord) = ASSERT (length rest1 > 0) (parseModOcc [] (tail rest1))
       parseModOcc :: [[Word8]] -> [Word8] -> ([[Word8]], [Word8])
-      parseModOcc acc str
+      -- We only look for dots if str could start with a module name,
+      -- i.e. if it starts with an upper case character.
+      -- Otherwise we might think that "X.:->" is the module name in
+      -- "X.:->.+", whereas actually "X" is the module name and
+      -- ":->.+" is a constructor name.
+      parseModOcc acc str@(c : _)
+       | isUpper $ chr $ fromIntegral c
          = case break (== dot) str of
               (top, []) -> (acc, top)
-              (top, _:bot) -> parseModOcc (top : acc) bot
-       
+              (top, _ : bot) -> parseModOcc (top : acc) bot
+      parseModOcc acc str = (acc, str)
+
 -- | Get the 'HValue' associated with the given name.
 --
 -- May cause loading the module that contains the name.