mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
warnings: don't complain about m4_foo and b4_foo when from the user
Currently, occurrences of these identifiers in the user's input yield spurious warnings. To tell the difference between a legitimate m4_foo from the user, and a bad m4_foo coming from a non-evaluated macro of a skeleton, escape the user's identifiers as m4@'_foo. We already use @' as a special sequence to be stripped from the skeleton's output. See <https://lists.gnu.org/r/bug-bison/2021-10/msg00026.html> and previous commit ("warnings: be less picky about occurrences of m4_/b4_ in the output"). * src/flex-scanner.h (OBSTACK_SGROW): New. * src/output.c (output_escaped): Escape m4_ and b4_. * src/scan-code.l: Likewise. * src/system.h (obstack_escape): Likewise. And rewrite as a function. * tests/skeletons.at (Suspicious sequences): Make sure the user can use m4_foo/b4_foo without spurious warnings.
This commit is contained in:
@@ -332,14 +332,18 @@ AT_CLEANUP
|
||||
|
||||
AT_SETUP([[Suspicious sequences]])
|
||||
|
||||
# <https://lists.gnu.org/r/bug-bison/2021-10/msg00026.html>.
|
||||
|
||||
# We must escape m4_foo as m4@&t@_foo to avoid Autotest's protection
|
||||
# against its own suspicious sequences.
|
||||
AT_DATA([[skel.c]],
|
||||
[[m4@&t@_include(b4_skeletonsdir/[c.m4])
|
||||
m4@&t@_divert_push(0)d@&t@nl
|
||||
@output(b4_parser_file_name@)d@&t@nl
|
||||
]b4_user_pre_prologue[
|
||||
]b4_user_post_prologue[
|
||||
b4_unevaluated
|
||||
m4@&t@_unevaluated
|
||||
b4_poison
|
||||
m4@&t@_poison
|
||||
]b4_epilogue[
|
||||
|
||||
m4@&t@_divert_pop(0)
|
||||
@@ -348,19 +352,21 @@ m4@&t@_divert_pop(0)
|
||||
AT_DATA([[input1.y]],
|
||||
[[%skeleton "./skel.c"
|
||||
%{
|
||||
myb4_unevaluated
|
||||
mym4_unevaluated
|
||||
myb4_user
|
||||
mym4_user
|
||||
b4_user
|
||||
m4@&t@_user
|
||||
%}
|
||||
%%
|
||||
start: ;
|
||||
b4_user: "b4_user";
|
||||
%%
|
||||
myb4_unevaluated
|
||||
mym4_unevaluated
|
||||
b4_user
|
||||
m4@&t@_user
|
||||
]])
|
||||
|
||||
AT_BISON_CHECK([[input1.y]], [], [],
|
||||
[[input1.tab.c:10: warning: suspicious sequence in the output: b4_unevaluated [-Wother]
|
||||
input1.tab.c:11: warning: suspicious sequence in the output: m4@&t@_unevaluated [-Wother]
|
||||
[[input1.tab.c:12: warning: suspicious sequence in the output: b4_poison [-Wother]
|
||||
input1.tab.c:13: warning: suspicious sequence in the output: m4@&t@_poison [-Wother]
|
||||
]])
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user