]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
gen_node_support.pl: improve error message for unclosed struct.
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 22 Apr 2025 17:56:31 +0000 (13:56 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
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 <clemens.ruck@t-online.de>
Author: Tom Lane <tgl@sss.pgh.pa.us>
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;