mirror of
https://github.com/postgres/postgres.git
synced 2025-05-08 07:21:33 +03:00
Don't hard-code the input file name in gen_tabcomplete.pl's output.
Use $ARGV[0], that is the specified input file name, in #line directives generated by gen_tabcomplete.pl. This makes code coverage reports work properly in the meson build system (where the input file name will be a relative path). Also fix up brain fade in the meson build rule for tab-complete.c: we only need to write the input file name once not twice. Jacob Champion (some cosmetic adjustments by me) Discussion: https://postgr.es/m/CAOYmi+=+oWAoi8pqnH0MJQqsSn4ddzqDhqRQJvyiN2aJSWvw2w@mail.gmail.com
This commit is contained in:
parent
95eb4cd4ff
commit
c75c6f8d28
@ -55,8 +55,9 @@ my $outfile = '';
|
|||||||
|
|
||||||
GetOptions('outfile=s' => \$outfile) or die "$0: wrong arguments";
|
GetOptions('outfile=s' => \$outfile) or die "$0: wrong arguments";
|
||||||
|
|
||||||
open my $infh, '<', $ARGV[0]
|
my $infile = $ARGV[0];
|
||||||
or die "$0: could not open input file '$ARGV[0]': $!\n";
|
open my $infh, '<', $infile
|
||||||
|
or die "$0: could not open input file '$infile': $!\n";
|
||||||
|
|
||||||
my $outfh;
|
my $outfh;
|
||||||
if ($outfile)
|
if ($outfile)
|
||||||
@ -91,7 +92,7 @@ printf $outfh <<EOM;
|
|||||||
|
|
||||||
#define SWITCH_CONVERSION_APPLIED
|
#define SWITCH_CONVERSION_APPLIED
|
||||||
|
|
||||||
#line 1 "tab-complete.in.c"
|
#line 1 "${infile}"
|
||||||
EOM
|
EOM
|
||||||
|
|
||||||
# Scan input file until we find the data-replacement label line.
|
# Scan input file until we find the data-replacement label line.
|
||||||
@ -114,7 +115,7 @@ my $last_case_label = 0;
|
|||||||
# with the line numbering of the original, to simplify compiler error message
|
# with the line numbering of the original, to simplify compiler error message
|
||||||
# reading and debugging.
|
# reading and debugging.
|
||||||
my $next_line_no = $. + 1;
|
my $next_line_no = $. + 1;
|
||||||
$output_code .= "#line ${next_line_no} \"tab-complete.in.c\"\n";
|
$output_code .= "#line ${next_line_no} \"${infile}\"\n";
|
||||||
|
|
||||||
# Scan until we find the BEGIN GEN_TABCOMPLETE line.
|
# Scan until we find the BEGIN GEN_TABCOMPLETE line.
|
||||||
# Add the scanned code to $output_code verbatim.
|
# Add the scanned code to $output_code verbatim.
|
||||||
@ -131,7 +132,7 @@ $output_code .= "\t{\n";
|
|||||||
|
|
||||||
# Keep line numbering in sync.
|
# Keep line numbering in sync.
|
||||||
$next_line_no = $. + 1;
|
$next_line_no = $. + 1;
|
||||||
$output_code .= "#line ${next_line_no} \"tab-complete.in.c\"\n";
|
$output_code .= "#line ${next_line_no} \"${infile}\"\n";
|
||||||
|
|
||||||
# Scan input file, collecting outer-level else-if conditions
|
# Scan input file, collecting outer-level else-if conditions
|
||||||
# to pass to process_else_if.
|
# to pass to process_else_if.
|
||||||
@ -190,7 +191,7 @@ $output_code .= "\t}\n";
|
|||||||
|
|
||||||
# Keep line numbering in sync.
|
# Keep line numbering in sync.
|
||||||
$next_line_no = $. + 1;
|
$next_line_no = $. + 1;
|
||||||
$output_code .= "#line ${next_line_no} \"tab-complete.in.c\"\n";
|
$output_code .= "#line ${next_line_no} \"${infile}\"\n";
|
||||||
|
|
||||||
# Scan the rest, adding it to $output_code verbatim.
|
# Scan the rest, adding it to $output_code verbatim.
|
||||||
while (<$infh>)
|
while (<$infh>)
|
||||||
@ -245,7 +246,7 @@ sub process_else_if
|
|||||||
process_match($typ, $cs, $args, $else_if_lineno, $isfirst);
|
process_match($typ, $cs, $args, $else_if_lineno, $isfirst);
|
||||||
$isfirst = 0;
|
$isfirst = 0;
|
||||||
# approximate line positioning of AND'd condition
|
# approximate line positioning of AND'd condition
|
||||||
$output_code .= "#line ${end_lineno} \"tab-complete.in.c\"\n";
|
$output_code .= "#line ${end_lineno} \"${infile}\"\n";
|
||||||
$output_code .= "\tif ($else_if_line\n";
|
$output_code .= "\tif ($else_if_line\n";
|
||||||
}
|
}
|
||||||
elsif ($else_if_line =~
|
elsif ($else_if_line =~
|
||||||
@ -269,7 +270,7 @@ sub process_else_if
|
|||||||
if ($end_lineno != $else_if_lineno)
|
if ($end_lineno != $else_if_lineno)
|
||||||
{
|
{
|
||||||
my $next_lineno = $end_lineno + 1;
|
my $next_lineno = $end_lineno + 1;
|
||||||
$output_code .= "#line ${next_lineno} \"tab-complete.in.c\"\n";
|
$output_code .= "#line ${next_lineno} \"${infile}\"\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -27,8 +27,8 @@ tabcomplete = custom_target('tabcomplete',
|
|||||||
input: 'tab-complete.in.c',
|
input: 'tab-complete.in.c',
|
||||||
output: 'tab-complete.c',
|
output: 'tab-complete.c',
|
||||||
command: [
|
command: [
|
||||||
perl, files('gen_tabcomplete.pl'), files('tab-complete.in.c'),
|
perl, files('gen_tabcomplete.pl'), '@INPUT@',
|
||||||
'--outfile', '@OUTPUT@', '@INPUT@',
|
'--outfile', '@OUTPUT@',
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
generated_sources += tabcomplete
|
generated_sources += tabcomplete
|
||||||
|
Loading…
x
Reference in New Issue
Block a user