diff --git a/boot b/boot index f47bdf649134f1c2fea3e73f77f72c0c42618872..ae573816366ea3ed0252807b098f665d8ba6971e 100755 --- 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: $!"; - } -} diff --git a/boot-pkgs b/boot-pkgs index b61382889fd943fd6dbf882d1c3ef74172eff6f2..6acea112e4db4368815d6f9d8832b081652495a9 100644 --- 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"; diff --git a/compiler/ghci/Linker.lhs b/compiler/ghci/Linker.lhs index bd0bb353084b75269737a6423d71331752cb7211..eaf452199eb1e7c38fd902e0d7e30ebd48a4ea22 100644 --- a/compiler/ghci/Linker.lhs +++ b/compiler/ghci/Linker.lhs @@ -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.