summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsimonpj <unknown>1999-12-20 10:12:50 +0000
committersimonpj <unknown>1999-12-20 10:12:50 +0000
commited974e41e3dd1acd24e2ef816b104ff66ea720ee (patch)
tree9d24dc069328aef1e886894b401907265fd52c5e
parent3e47ab23427135cef00e718ae10f2b6338c4ae64 (diff)
downloadhaskell-ed974e41e3dd1acd24e2ef816b104ff66ea720ee.tar.gz
[project @ 1999-12-20 10:12:50 by simonpj]
Fix a gotcha in the interface-file post processing that led to bizarre omissions from interface files when working with existential types. That's what you get for using Perl
-rw-r--r--ghc/driver/ghc-iface.lprl7
1 files changed, 6 insertions, 1 deletions
diff --git a/ghc/driver/ghc-iface.lprl b/ghc/driver/ghc-iface.lprl
index f14e6dc2cd..71b5d3c943 100644
--- a/ghc/driver/ghc-iface.lprl
+++ b/ghc/driver/ghc-iface.lprl
@@ -158,6 +158,8 @@ sub constructNewHiFile {
print NEWHI $Stuff{'new:usages'} unless $Stuff{'new:usages'} eq '';
print NEWHI $Stuff{'new:instances'} unless $Stuff{'new:instances'} eq '';
+ print STDERR @decl_names ;
+
foreach $v (@decl_names) {
&printNewItemVersion(NEWHI, $v, $new_module_version, $show_hi_diffs); # Print new version number
print NEWHI $Decl{"new:$v"}; # Print the new decl itself
@@ -254,8 +256,11 @@ sub readHiFile {
$Decl{"$mod:$current_name"} = $_;
if ($mod eq "old") { $OldVersion{$current_name} = $version; }
- } elsif ( /^(newtype|data)\s+(.*\s+=>\s+)?(\S+)\s+/ ) {
+ } elsif ( /^(newtype|data)\s+({.*}\s+=>\s+)?(\S+)\s+/ ) {
# Data declaration
+ # The (...)? parts skips over the context of a data decl
+ # to find the name of the type constructor. The curly
+ # brackets are part of the iface file syntax for contexts
$current_name = "data $3";
$Decl{"$mod:$current_name"} = $_;
if ($mod eq "old") { $OldVersion{$current_name} = $version; }