Allow the "diag_listed_as" annotation to work on multi-line function calls.
authorNicholas Clark <nick@ccl4.org>
Tue, 29 Jun 2010 18:54:50 +0000 (19:54 +0100)
committerNicholas Clark <nick@ccl4.org>
Tue, 29 Jun 2010 18:54:50 +0000 (19:54 +0100)
Previously it would only work if the comment was on the line immediately
preceding the closing /\);/, which was fine for croak()/die()/etc function
calls all on one line, but not so useful for longer calls.

t/porting/diag.t

index daec293..7c05172 100755 (executable)
@@ -110,6 +110,7 @@ sub check_file {
     next if /^#/;
     next if /^ * /;
 
+    my $multiline = 0;
     # Loop to accumulate the message text all on one line.
     while (m/$source_msg_re/ and not m/\);$/) {
       my $nextline = <$codefh>;
@@ -127,6 +128,7 @@ sub check_file {
         $nextline =~ s/^"//;
       }
       $_ = "$_$nextline";
+      ++$multiline;
     }
     # This should happen *after* unwrapping, or we don't reformat the things
     # in later lines.
@@ -161,7 +163,7 @@ sub check_file {
         @categories = map {s/^WARN_//; lc $_} split /\s*[|,]\s*/, $+{'category'};
     }
     my $name;
-    if ($listed_as and $listed_as_line == $.) {
+    if ($listed_as and $listed_as_line == $. - $multiline) {
         $name = $listed_as;
     } else {
         $name = $+{'text'};