mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
no-lines: avoid leaving an empty line instead of the syncline
Currently, with --no-lines, instead of "#line file line\n", we emit "\n". Let's emit nothing. * data/skeletons/bison.m4 (b4_syncline): Emit at end-of-line when enabled. * data/skeletons/bison.m4, data/skeletons/c.m4, data/skeletons/glr.cc, * data/skeletons/lalr1.cc, src/output.c: Use dnl after b4_syncline to avoid spurious empty lines. * tests/synclines.at (Sync Lines): Make sure that --no-lines is like grep -v #line. * tests/calc.at: Make sure that a rich grammar file behaves properly with %no-lines.
This commit is contained in:
@@ -28,7 +28,7 @@ AT_BANNER([[Sync Lines.]])
|
||||
m4_define([_AT_SYNCLINES_COMPILE],
|
||||
[AT_CHECK([$CC $CFLAGS $CPPFLAGS -c $1], [ignore], [], [stderr])
|
||||
|
||||
# Transform stderr into something like this:
|
||||
# Transform the file 'stderr' into something like this:
|
||||
#
|
||||
# input.y:4: #error "4"
|
||||
#
|
||||
@@ -121,7 +121,7 @@ EOF
|
||||
|
||||
# AT_SYNCLINES_COMPILE(FILE)
|
||||
# --------------------------
|
||||
# Compile FILE expecting an error, and save in the file stdout the
|
||||
# Compile FILE expecting an error, and save in the file 'stdout' the
|
||||
# normalized output. If we can't get a trustable location
|
||||
# from the compiler, just skip the test.
|
||||
#
|
||||
@@ -449,11 +449,36 @@ AT_DATA_GRAMMAR([input.y],
|
||||
]AT_YYERROR_DECLARE_EXTERN[
|
||||
]AT_YYLEX_DECLARE_EXTERN[
|
||||
%}
|
||||
%union {
|
||||
int ival;
|
||||
}
|
||||
%%
|
||||
exp: '0'
|
||||
]])
|
||||
|
||||
# Generate without.* without the #line. Don't use -o without.c which
|
||||
# would change the content (e.g., CPP guard depend on the output file
|
||||
# name).
|
||||
AT_BISON_CHECK([--no-lines -o input.AT_LANG_EXT -d input.y])
|
||||
AT_CHECK([[grep '#line'] *.AT_LANG_EXT *.AT_LANG_HDR], 1)
|
||||
AT_CHECK([mv input.]AT_LANG_EXT[ without.]AT_LANG_EXT[])
|
||||
AT_CHECK([mv input.]AT_LANG_HDR[ without.]AT_LANG_HDR[])
|
||||
# There is no #line at all.
|
||||
AT_CHECK([grep '#line' *.]AT_LANG_EXT[ *.]AT_LANG_HDR[], 1)
|
||||
|
||||
# Generate with.* without the #line.
|
||||
AT_BISON_CHECK([-o input.AT_LANG_EXT -d input.y])
|
||||
AT_CHECK([mv input.]AT_LANG_EXT[ with.]AT_LANG_EXT[])
|
||||
AT_CHECK([mv input.]AT_LANG_HDR[ with.]AT_LANG_HDR[])
|
||||
|
||||
# The implementation file with --no-line is exactly the
|
||||
# original one with #lines removed.
|
||||
AT_CHECK([grep -v '#line' with.]AT_LANG_EXT[ >expout])
|
||||
AT_CHECK([cat without.AT_LANG_EXT], 0, [expout])
|
||||
|
||||
# Likewise for the header.
|
||||
AT_CHECK([grep -v '#line' with.]AT_LANG_HDR[ >expout])
|
||||
AT_CHECK([cat without.AT_LANG_HDR], 0, [expout])
|
||||
|
||||
AT_BISON_OPTION_POPDEFS
|
||||
|
||||
AT_CLEANUP
|
||||
|
||||
Reference in New Issue
Block a user