doc/check-docs (scansyms): Stop trying to parse at `Leaked slot names'.
[sod] / doc / check-docs
index 06bb539..c721da2 100755 (executable)
@@ -14,7 +14,7 @@ sub scansyms (\%$) {
     chomp;
     if (/^---/) { $st = NEWPKG; }
     elsif ($st eq NEWPKG && /^Package `[-\w]+'/) { $st = LIST; }
-    elsif ($st eq LIST && /^Classes:/) { $st = LIMBO; }
+    elsif ($st eq LIST && /^(Classes|Leaked slot names):/) { $st = LIMBO; }
     elsif ($st eq LIMBO && /^Methods:/) { $st = METHODS; }
     elsif (/^\s*$/) { }
     elsif ($st eq LIMBO) { }
@@ -78,6 +78,14 @@ sub scanaux (\%$) {
 scansyms %LABEL, "doc/SYMBOLS";
 scanaux %DEF, "sod.aux";
 
+my $BAD = 0;
+
+sub bad ($) {
+  my ($what) = @_;
+  print STDERR "$0: $what\n";
+  $BAD = 2;
+}
+
 SYM: for my $sym (sort keys %LABEL) {
   if ($DEF{$sym}) { next SYM; }
   my ($tag, $name) = $sym =~ /^([^:]+):(.*)$/;
@@ -92,7 +100,7 @@ SYM: for my $sym (sort keys %LABEL) {
         $DEF{"fun:sod-frontend:augment-options"}) { }
   elsif ($sym eq "gf:setf/generic-function-methods") { }
   elsif ($tag eq "cty") { }
-  else { print ";; missing $tag:$name (defined in $LABEL{$sym})\n"; }
+  else { bad "missing $tag:$name (defined in $LABEL{$sym})"; }
 }
 
 SYM: for my $sym (sort keys %DEF) {
@@ -115,5 +123,7 @@ SYM: for my $sym (sort keys %DEF) {
   elsif ($sym eq "plug:class-item" || $sym eq "plug:module") { }
   elsif ($sym eq "sym:int") { }
   elsif ($name =~ /^sod-frontend:(.*)$/ && $LABEL{"$tag:$1"}) { }
-  else { print ";; unexpected $tag:$name (described in $DEF{$sym})\n"; }
+  else { bad "unexpected $tag:$name (described in $DEF{$sym})"; }
 }
+
+exit $BAD;