gen_node_support.pl: improve error message for unclosed struct.
authorTom Lane <[email protected]>
Tue, 22 Apr 2025 17:56:31 +0000 (13:56 -0400)
committerTom Lane <[email protected]>
Tue, 22 Apr 2025 17:56:31 +0000 (13:56 -0400)
This error message was 'runaway "struct_name"', which isn't all
that clear; I think 'could not find closing brace for "struct_name"'
is better.  Also, provide the location of the struct start using the
script's usual '$file:$lineno' style.

Bug: #18901
Reported-by: Clemens Ruck <[email protected]>
Author: Tom Lane <[email protected]>
Discussion: https://postgr.es/m/18901-424272abe01357e6@postgresql.org

src/backend/nodes/gen_node_support.pl

index f6229089cd15be313e6053d4065c210f905c89d1..77659b0f760208ff4ab915ceec366d4da6513888 100644 (file)
@@ -195,6 +195,7 @@ my $next_input_file = 0;
 foreach my $infile (@ARGV)
 {
    my $in_struct;
+   my $in_struct_lineno;
    my $subline;
    my $is_node_struct;
    my $supertype;
@@ -543,6 +544,7 @@ foreach my $infile (@ARGV)
            if ($line =~ /^(?:typedef )?struct (\w+)$/ && $1 ne 'Node')
            {
                $in_struct = $1;
+               $in_struct_lineno = $lineno;
                $subline = 0;
            }
            # one node type typedef'ed directly from another
@@ -570,7 +572,8 @@ foreach my $infile (@ARGV)
 
    if ($in_struct)
    {
-       die "runaway \"$in_struct\" in file \"$infile\"\n";
+       die
+         "$infile:$in_struct_lineno: could not find closing brace for struct \"$in_struct\"\n";
    }
 
    close $ifh;