Merge branch 'maint'

* maint:
  warnings: introduce -Wdeprecated in the usage info
  errors: prefix the output with "error: "
  errors: indent "invalid value for %define" context
  errors: indent "%define var" redefinition context
  errors: indent "symbol redeclaration" context
  errors: indent "result type clash" error context

Conflicts:
	src/complain.c
	src/muscle-tab.c
	src/reader.c
	src/symtab.c
	tests/conflicts.at
	tests/input.at
	tests/named-refs.at
	tests/output.at
	tests/skeletons.at
This commit is contained in:
Akim Demaille
2012-09-26 14:35:47 +02:00
16 changed files with 288 additions and 240 deletions

12
NEWS
View File

@@ -211,6 +211,18 @@ GNU Bison NEWS
Incorrect definitions of YY_, issued by yacc.c when no parser header is Incorrect definitions of YY_, issued by yacc.c when no parser header is
generated, are removed. generated, are removed.
** Changes in the format of errors and exceptions output
This used to be the format of many error reports:
foo.y:5.10-24: result type clash on merge function 'merge': <t3> != <t2>
foo.y:4.13-27: previous declaration
It is now:
foo.y:5.10-25: result type clash on merge function 'merge': <t3> != <t2>
foo.y:4.13-27: previous declaration
* Noteworthy changes in release 2.6.2 (2012-08-03) [stable] * Noteworthy changes in release 2.6.2 (2012-08-03) [stable]
** Bug fixes ** Bug fixes

2
THANKS
View File

@@ -104,6 +104,7 @@ Shura debil_urod@ngs.ru
Stefano Lattarini stefano.lattarini@gmail.com Stefano Lattarini stefano.lattarini@gmail.com
Steve Murphy murf@parsetree.com Steve Murphy murf@parsetree.com
Sum Wu sum@geekhouse.org Sum Wu sum@geekhouse.org
Théophile Ranquet theophile.ranquet@gmail.com
Thiru Ramakrishnan thiru.ramakrishnan@gmail.com Thiru Ramakrishnan thiru.ramakrishnan@gmail.com
Tim Josling tej@melbpc.org.au Tim Josling tej@melbpc.org.au
Tim Landscheidt tim@tim-landscheidt.de Tim Landscheidt tim@tim-landscheidt.de
@@ -127,6 +128,7 @@ thank them! Please, help us keeping this list up to date.
Local Variables: Local Variables:
mode: text mode: text
coding: utf-8
End: End:
----- -----

View File

@@ -122,7 +122,9 @@ complains (const location *loc, warnings flags, const char *message,
{ {
if (flags & complaint) if (flags & complaint)
{ {
error_message (loc, complaint, NULL, message, args); error_message (loc, complaint,
indent_ptr && *indent_ptr ? NULL : _("error"),
message, args);
complaint_issued = true; complaint_issued = true;
} }
else if (flags & fatal) else if (flags & fatal)
@@ -140,13 +142,17 @@ complains (const location *loc, warnings flags, const char *message,
else if (warnings_flag & Wyacc) else if (warnings_flag & Wyacc)
{ {
set_warning_issued (); set_warning_issued ();
error_message (loc, flags, _("warning"), message, args); error_message (loc, flags,
indent_ptr && *indent_ptr ? NULL : _("warning"),
message, args);
} }
} }
else if (warnings_flag & flags) else if (warnings_flag & flags)
{ {
set_warning_issued (); set_warning_issued ();
error_message (loc, flags, _("warning"), message, args); error_message (loc, flags,
indent_ptr && *indent_ptr ? NULL : _("warning"),
message, args);
} }
} }
@@ -179,6 +185,7 @@ void complain_at_indent (location loc, warnings flags, unsigned *indent,
va_end (args); va_end (args);
} }
/*--------------------------------. /*--------------------------------.
| Report a warning, and proceed. | | Report a warning, and proceed. |
`--------------------------------*/ `--------------------------------*/

View File

@@ -48,6 +48,9 @@ extern warnings warnings_flag;
/** Display a "[-Wyacc]" like message on stderr. */ /** Display a "[-Wyacc]" like message on stderr. */
void warnings_print_categories (warnings warn_flags); void warnings_print_categories (warnings warn_flags);
/* Sub-messages indent. */
#define SUB_INDENT (4)
/** Record that a warning is about to be issued, and treat it as an /** Record that a warning is about to be issued, and treat it as an
error if <tt>warnings_flag & Werror</tt>. This is exported error if <tt>warnings_flag & Werror</tt>. This is exported
only for the sake of Yacc-compatible conflict reports in conflicts.c. only for the sake of Yacc-compatible conflict reports in conflicts.c.

View File

@@ -326,13 +326,14 @@ Warning categories include:\n\
`yacc' incompatibilities with POSIX Yacc\n\ `yacc' incompatibilities with POSIX Yacc\n\
`conflicts-sr' S/R conflicts (enabled by default)\n\ `conflicts-sr' S/R conflicts (enabled by default)\n\
`conflicts-rr' R/R conflicts (enabled by default)\n\ `conflicts-rr' R/R conflicts (enabled by default)\n\
`deprecated' obsolete constructs\n\
`other' all other warnings (enabled by default)\n\ `other' all other warnings (enabled by default)\n\
`all' all the warnings\n\ `all' all the warnings\n\
`no-CATEGORY' turn off warnings in CATEGORY\n\ `no-CATEGORY' turn off warnings in CATEGORY\n\
`none' turn off all the warnings\n\ `none' turn off all the warnings\n\
`error' treat warnings as errors\n\ `error' treat warnings as errors\n\
\n\
"), stdout); "), stdout);
putc ('\n', stdout);
fputs (_("\ fputs (_("\
THINGS is a list of comma separated words that can include:\n\ THINGS is a list of comma separated words that can include:\n\

View File

@@ -439,12 +439,16 @@ muscle_percent_define_insert (char const *variable, location variable_loc,
&& muscle_find_const (name)) && muscle_find_const (name))
{ {
muscle_percent_define_how how_old = atoi (muscle_find_const (how_name)); muscle_percent_define_how how_old = atoi (muscle_find_const (how_name));
unsigned i = 0;
if (how_old == MUSCLE_PERCENT_DEFINE_F) if (how_old == MUSCLE_PERCENT_DEFINE_F)
return; return;
complain_at (variable_loc, complaint, _("%%define variable %s redefined"), complain_at_indent (variable_loc, complaint, &i,
quote (variable)); _("%%define variable %s redefined"),
location loc = muscle_percent_define_get_loc (variable); quote (variable));
complain_at (loc, complaint, _("previous definition")); i += SUB_INDENT;
complain_at_indent (muscle_percent_define_get_loc (variable),
complaint, &i,
_("previous definition"));
} }
MUSCLE_INSERT_STRING (name, value); MUSCLE_INSERT_STRING (name, value);
@@ -600,13 +604,16 @@ muscle_percent_define_check_values (char const * const *values)
} }
if (!*values) if (!*values)
{ {
unsigned i = 0;
location loc = muscle_percent_define_get_loc (*variablep); location loc = muscle_percent_define_get_loc (*variablep);
complain_at (loc, complaint, complain_at_indent
_("invalid value for %%define variable %s: %s"), (loc, complaint, &i,
quote (*variablep), quote_n (1, value)); _("invalid value for %%define variable %s: %s"),
quote (*variablep), quote_n (1, value));
i += SUB_INDENT;
for (values = variablep + 1; *values; ++values) for (values = variablep + 1; *values; ++values)
complain_at (loc, complaint, _("accepted value: %s"), complain_at_indent (loc, complaint, &i, _("accepted value: %s"),
quote (*values)); quote (*values));
} }
else else
{ {

View File

@@ -128,11 +128,16 @@ record_merge_function_type (int merger, uniqstr type, location declaration_loc)
aver (merge_function != NULL && merger_find == merger); aver (merge_function != NULL && merger_find == merger);
if (merge_function->type != NULL && !UNIQSTR_EQ (merge_function->type, type)) if (merge_function->type != NULL && !UNIQSTR_EQ (merge_function->type, type))
{ {
complain_at (declaration_loc, complaint, unsigned indent = 0;
_("result type clash on merge function %s: <%s> != <%s>"), complain_at_indent (declaration_loc, complaint, &indent,
quote (merge_function->name), type, merge_function->type); _("result type clash on merge function %s: "
complain_at (merge_function->type_declaration_location, complaint, "<%s> != <%s>"),
_("previous declaration")); quote (merge_function->name), type,
merge_function->type);
indent += SUB_INDENT;
complain_at_indent (merge_function->type_declaration_location, complaint,
&indent,
_("previous declaration"));
} }
merge_function->type = uniqstr_new (type); merge_function->type = uniqstr_new (type);
merge_function->type_declaration_location = declaration_loc; merge_function->type_declaration_location = declaration_loc;

View File

@@ -193,16 +193,24 @@ static void
symbol_redeclaration (symbol *s, const char *what, location first, symbol_redeclaration (symbol *s, const char *what, location first,
location second) location second)
{ {
complain_at (second, complaint, _("%s redeclaration for %s"), what, s->tag); unsigned i = 0;
complain_at (first, complaint, _("previous declaration")); complain_at_indent (second, complaint, &i,
_("%s redeclaration for %s"), what, s->tag);
i += SUB_INDENT;
complain_at_indent (first, complaint, &i,
_("previous declaration"));
} }
static void static void
semantic_type_redeclaration (semantic_type *s, const char *what, location first, semantic_type_redeclaration (semantic_type *s, const char *what, location first,
location second) location second)
{ {
complain_at (second, complaint, _("%s redeclaration for <%s>"), what, s->tag); unsigned i = 0;
complain_at (first, complaint, _("previous declaration")); complain_at_indent (second, complaint, &i,
_("%s redeclaration for <%s>"), what, s->tag);
i += SUB_INDENT;
complain_at_indent (first, complaint, &i,
_("previous declaration"));
} }
@@ -546,6 +554,7 @@ symbol_pack_processor (void *this, void *null ATTRIBUTE_UNUSED)
static void static void
user_token_number_redeclaration (int num, symbol *first, symbol *second) user_token_number_redeclaration (int num, symbol *first, symbol *second)
{ {
unsigned i = 0;
/* User token numbers are not assigned during the parsing, but in a /* User token numbers are not assigned during the parsing, but in a
second step, via a traversal of the symbol table sorted on tag. second step, via a traversal of the symbol table sorted on tag.
@@ -557,11 +566,12 @@ user_token_number_redeclaration (int num, symbol *first, symbol *second)
first = second; first = second;
second = tmp; second = tmp;
} }
complain_at (second->location, complaint, complain_at_indent (second->location, complaint, &i,
_("user token number %d redeclaration for %s"), _("user token number %d redeclaration for %s"),
num, second->tag); num, second->tag);
complain_at (first->location, complaint, _("previous declaration for %s"), complain_at_indent (first->location, complaint, &i,
first->tag); _("previous declaration for %s"),
first->tag);
} }
/*--------------------------------------------------. /*--------------------------------------------------.

View File

@@ -945,7 +945,7 @@ exp: exp OP exp | NUM;
]]) ]])
AT_BISON_CHECK([-o input.c input.y], 1, [], AT_BISON_CHECK([-o input.c input.y], 1, [],
[[input.y: shift/reduce conflicts: 1 found, 0 expected [[input.y: error: shift/reduce conflicts: 1 found, 0 expected
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -981,7 +981,7 @@ exp: exp OP exp | NUM;
]]) ]])
AT_BISON_CHECK([-o input.c input.y], 1, [], AT_BISON_CHECK([-o input.c input.y], 1, [],
[[input.y: shift/reduce conflicts: 1 found, 2 expected [[input.y: error: shift/reduce conflicts: 1 found, 2 expected
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -1000,7 +1000,7 @@ a: 'a';
]]) ]])
AT_BISON_CHECK([-o input.c input.y], 1, [], AT_BISON_CHECK([-o input.c input.y], 1, [],
[[input.y: reduce/reduce conflicts: 1 found, 0 expected [[input.y: error: reduce/reduce conflicts: 1 found, 0 expected
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -1584,12 +1584,12 @@ for gram in sr-rr sr rr; do
if test -z "$sr_exp_i" && test "$sr_count" -ne 0; then if test -z "$sr_exp_i" && test "$sr_count" -ne 0; then
echo "warning: $sr_count shift/reduce conflicts" echo "warning: $sr_count shift/reduce conflicts"
elif test "$sr_exp_i" -ne "$sr_count"; then elif test "$sr_exp_i" -ne "$sr_count"; then
echo "shift/reduce conflicts: $sr_count found, $sr_exp_i expected" echo "error: shift/reduce conflicts: $sr_count found, $sr_exp_i expected"
fi fi
if test -z "$rr_exp_i" && test "$rr_count" -ne 0; then if test -z "$rr_exp_i" && test "$rr_count" -ne 0; then
echo "warning: $rr_count reduce/reduce conflicts" echo "warning: $rr_count reduce/reduce conflicts"
elif test "$rr_exp_i" -ne "$rr_count"; then elif test "$rr_exp_i" -ne "$rr_count"; then
echo "reduce/reduce conflicts: $rr_count found, $rr_exp_i expected" echo "error: reduce/reduce conflicts: $rr_count found, $rr_exp_i expected"
fi fi
} | sed -e "s/^/$file: /" > experr } | sed -e "s/^/$file: /" > experr
]AT_BISON_CHECK([[-Wnone $file]], [[1]], [[]], [[experr]])[ ]AT_BISON_CHECK([[-Wnone $file]], [[1]], [[]], [[experr]])[

View File

@@ -1652,11 +1652,11 @@ main (void)
AT_BISON_OPTION_POPDEFS AT_BISON_OPTION_POPDEFS
AT_BISON_CHECK([[-o glr-regr18.c glr-regr18.y]], 1, [], AT_BISON_CHECK([[-o glr-regr18.c glr-regr18.y]], 1, [],
[glr-regr18.y:26.18-24: result type clash on merge function 'merge': <type2> != <type1> [[glr-regr18.y:26.18-24: error: result type clash on merge function 'merge': <type2> != <type1>
glr-regr18.y:25.18-24: previous declaration glr-regr18.y:25.18-24: previous declaration
glr-regr18.y:27.13-19: result type clash on merge function 'merge': <type3> != <type2> glr-regr18.y:27.13-19: error: result type clash on merge function 'merge': <type3> != <type2>
glr-regr18.y:26.18-24: previous declaration glr-regr18.y:26.18-24: previous declaration
]) ]])
AT_CLEANUP AT_CLEANUP

View File

@@ -33,8 +33,8 @@ exp: { @$ = @1 ; };
]]) ]])
AT_BISON_CHECK([input.y], [1], [], AT_BISON_CHECK([input.y], [1], [],
[[input.y:2.13-14: integer out of range: '$1' [[input.y:2.13-14: error: integer out of range: '$1'
input.y:3.13-14: integer out of range: '@1' input.y:3.13-14: error: integer out of range: '@1'
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -58,8 +58,8 @@ exp: foo { $$; } foo { $2; } foo
]]) ]])
AT_BISON_CHECK([input.y], [1], [], AT_BISON_CHECK([input.y], [1], [],
[[input.y:5.12-13: $$ for the midrule at $2 of 'exp' has no declared type [[input.y:5.12-13: error: $$ for the midrule at $2 of 'exp' has no declared type
input.y:5.24-25: $2 of 'exp' has no declared type input.y:5.24-25: error: $2 of 'exp' has no declared type
input.y:5.6-32: warning: type clash on default action: <bar> != <> [-Wother] input.y:5.6-32: warning: type clash on default action: <bar> != <> [-Wother]
input.y:6.6-8: warning: type clash on default action: <bar> != <> [-Wother] input.y:6.6-8: warning: type clash on default action: <bar> != <> [-Wother]
input.y:7.5: warning: empty rule for typed nonterminal, and no action [-Wother] input.y:7.5: warning: empty rule for typed nonterminal, and no action [-Wother]
@@ -200,30 +200,30 @@ start: ;
]]) ]])
AT_BISON_CHECK([input.y], [1], [], AT_BISON_CHECK([input.y], [1], [],
[[input.y:1.13-29: %destructor redeclaration for <*> [[input.y:1.13-29: error: %destructor redeclaration for <*>
input.y:1.13-29: previous declaration input.y:1.13-29: previous declaration
input.y:2.10-24: %printer redeclaration for <*> input.y:2.10-24: error: %printer redeclaration for <*>
input.y:2.10-24: previous declaration input.y:2.10-24: previous declaration
input.y:4.13-29: %destructor redeclaration for <*> input.y:4.13-29: error: %destructor redeclaration for <*>
input.y:1.13-29: previous declaration input.y:1.13-29: previous declaration
input.y:5.10-24: %printer redeclaration for <*> input.y:5.10-24: error: %printer redeclaration for <*>
input.y:2.10-24: previous declaration input.y:2.10-24: previous declaration
input.y:7.13-29: %destructor redeclaration for <> input.y:7.13-29: error: %destructor redeclaration for <>
input.y:7.13-29: previous declaration input.y:7.13-29: previous declaration
input.y:8.10-24: %printer redeclaration for <> input.y:8.10-24: error: %printer redeclaration for <>
input.y:8.10-24: previous declaration input.y:8.10-24: previous declaration
input.y:10.13-29: %destructor redeclaration for <> input.y:10.13-29: error: %destructor redeclaration for <>
input.y:7.13-29: previous declaration input.y:7.13-29: previous declaration
input.y:11.10-24: %printer redeclaration for <> input.y:11.10-24: error: %printer redeclaration for <>
input.y:8.10-24: previous declaration input.y:8.10-24: previous declaration
input.y:17.13-29: %destructor redeclaration for <*> input.y:17.13-29: error: %destructor redeclaration for <*>
input.y:4.13-29: previous declaration input.y:4.13-29: previous declaration
input.y:18.10-24: %printer redeclaration for <*> input.y:18.10-24: error: %printer redeclaration for <*>
input.y:5.10-24: previous declaration input.y:5.10-24: previous declaration
input.y:20.13-29: %destructor redeclaration for <> input.y:20.13-29: error: %destructor redeclaration for <>
input.y:10.13-29: previous declaration input.y:10.13-29: previous declaration
input.y:21.10-24: %printer redeclaration for <> input.y:21.10-24: error: %printer redeclaration for <>
input.y:11.10-24: previous declaration input.y:11.10-24: previous declaration
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -251,22 +251,22 @@ start: ;
]]) ]])
AT_BISON_CHECK([input.y], [1], [], AT_BISON_CHECK([input.y], [1], [],
[[input.y:4.13-29: %destructor redeclaration for <field1> [[input.y:4.13-29: error: %destructor redeclaration for <field1>
input.y:1.13-29: previous declaration input.y:1.13-29: previous declaration
input.y:4.13-29: %destructor redeclaration for <field1> input.y:4.13-29: error: %destructor redeclaration for <field1>
input.y:4.13-29: previous declaration input.y:4.13-29: previous declaration
input.y:5.10-24: %printer redeclaration for <field2> input.y:5.10-24: error: %printer redeclaration for <field2>
input.y:2.10-24: previous declaration input.y:2.10-24: previous declaration
input.y:5.10-24: %printer redeclaration for <field2> input.y:5.10-24: error: %printer redeclaration for <field2>
input.y:5.10-24: previous declaration input.y:5.10-24: previous declaration
input.y:11.13-29: %destructor redeclaration for <field1> input.y:11.13-29: error: %destructor redeclaration for <field1>
input.y:4.13-29: previous declaration input.y:4.13-29: previous declaration
input.y:11.13-29: %destructor redeclaration for <field2> input.y:11.13-29: error: %destructor redeclaration for <field2>
input.y:1.13-29: previous declaration input.y:1.13-29: previous declaration
input.y:12.10-24: %printer redeclaration for <field1> input.y:12.10-24: error: %printer redeclaration for <field1>
input.y:2.10-24: previous declaration input.y:2.10-24: previous declaration
input.y:12.10-24: %printer redeclaration for <field2> input.y:12.10-24: error: %printer redeclaration for <field2>
input.y:5.10-24: previous declaration input.y:5.10-24: previous declaration
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -286,7 +286,7 @@ exp: bar;
]]) ]])
AT_BISON_CHECK([input.y], [1], [], AT_BISON_CHECK([input.y], [1], [],
[[input.y:2.16-18: symbol bar is used, but is not defined as a token and has no rules [[input.y:2.16-18: error: symbol bar is used, but is not defined as a token and has no rules
input.y:1.17-19: warning: symbol baz is used, but is not defined as a token and has no rules [-Wother] input.y:1.17-19: warning: symbol baz is used, but is not defined as a token and has no rules [-Wother]
input.y:1.13-15: warning: symbol foo is used, but is not defined as a token and has no rules [-Wother] input.y:1.13-15: warning: symbol foo is used, but is not defined as a token and has no rules [-Wother]
input.y:3.13-15: warning: symbol qux is used, but is not defined as a token and has no rules [-Wother] input.y:3.13-15: warning: symbol qux is used, but is not defined as a token and has no rules [-Wother]
@@ -480,14 +480,14 @@ exp: foo;
]]) ]])
AT_BISON_CHECK([input.y], [1], [], AT_BISON_CHECK([input.y], [1], [],
[[input.y:8.7-11: %type redeclaration for foo [[input.y:8.7-11: error: %type redeclaration for foo
input.y:3.7-11: previous declaration input.y:3.7-11: previous declaration
input.y:10.13-17: %destructor redeclaration for foo input.y:10.13-17: error: %destructor redeclaration for foo
input.y:5.13-17: previous declaration input.y:5.13-17: previous declaration
input.y:9.10-14: %printer redeclaration for foo input.y:9.10-14: error: %printer redeclaration for foo
input.y:4.10-14: previous declaration input.y:4.10-14: previous declaration
input.y:11.1-5: %left redeclaration for foo input.y:11.1-5: error: %left redeclaration for foo
input.y:6.1-5: previous declaration input.y:6.1-5: previous declaration
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -506,7 +506,7 @@ AT_SETUP([Torturing the Scanner])
AT_BISON_OPTION_PUSHDEFS AT_BISON_OPTION_PUSHDEFS
AT_DATA([input.y], []) AT_DATA([input.y], [])
AT_BISON_CHECK([input.y], [1], [], AT_BISON_CHECK([input.y], [1], [],
[[input.y:1.1: syntax error, unexpected end of file [[input.y:1.1: error: syntax error, unexpected end of file
]]) ]])
@@ -514,7 +514,7 @@ AT_DATA([input.y],
[{} [{}
]) ])
AT_BISON_CHECK([input.y], [1], [], AT_BISON_CHECK([input.y], [1], [],
[[input.y:1.1-2: syntax error, unexpected {...} [[input.y:1.1-2: error: syntax error, unexpected {...}
]]) ]])
@@ -780,9 +780,9 @@ AT_DATA_GRAMMAR([input.y],
start: .GOOD GOOD start: .GOOD GOOD
]]) ]])
AT_BISON_CHECK([-o input.c input.y], [1], [], AT_BISON_CHECK([-o input.c input.y], [1], [],
[[input.y:10.10: invalid character: '-' [[input.y:10.10: error: invalid character: '-'
input.y:11.10-16: invalid identifier: '1NV4L1D' input.y:11.10-16: error: invalid identifier: '1NV4L1D'
input.y:12.10: invalid character: '-' input.y:12.10: error: invalid character: '-'
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -804,9 +804,9 @@ start: DECIMAL_1 HEXADECIMAL_2;
]]) ]])
AT_BISON_CHECK([redecl.y], [1], [], AT_BISON_CHECK([redecl.y], [1], [],
[[redecl.y:10.10-22: user token number 11259375 redeclaration for HEXADECIMAL_1 [[redecl.y:10.10-22: error: user token number 11259375 redeclaration for HEXADECIMAL_1
redecl.y:9.8-16: previous declaration for DECIMAL_1 redecl.y:9.8-16: previous declaration for DECIMAL_1
redecl.y:12.10-18: user token number 16702650 redeclaration for DECIMAL_2 redecl.y:12.10-18: error: user token number 16702650 redeclaration for DECIMAL_2
redecl.y:11.10-22: previous declaration for HEXADECIMAL_2 redecl.y:11.10-22: previous declaration for HEXADECIMAL_2
]]) ]])
@@ -819,8 +819,8 @@ start: TOO_LARGE_DEC TOO_LARGE_HEX
]]) ]])
AT_BISON_CHECK([too-large.y], [1], [], AT_BISON_CHECK([too-large.y], [1], [],
[[too-large.y:9.22-42: integer out of range: '999999999999999999999' [[too-large.y:9.22-42: error: integer out of range: '999999999999999999999'
too-large.y:10.24-44: integer out of range: '0xFFFFFFFFFFFFFFFFFFF' too-large.y:10.24-44: error: integer out of range: '0xFFFFFFFFFFFFFFFFFFF'
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -860,12 +860,12 @@ start: ;
]]) ]])
AT_BISON_CHECK([-o input.c input.y], 1, [], AT_BISON_CHECK([-o input.c input.y], 1, [],
[[input.y:1.10-2.0: missing '"' at end of line [[input.y:1.10-2.0: error: missing '"' at end of line
input.y:4.10-5.0: missing "'" at end of line input.y:4.10-5.0: error: missing "'" at end of line
input.y:14.11-15.0: missing "'" at end of line input.y:14.11-15.0: error: missing "'" at end of line
input.y:16.11-17.0: missing '"' at end of line input.y:16.11-17.0: error: missing '"' at end of line
input.y:19.13-20.0: missing '}' at end of file input.y:19.13-20.0: error: missing '}' at end of file
input.y:20.1: syntax error, unexpected end of file input.y:20.1: error: syntax error, unexpected end of file
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -907,7 +907,7 @@ PREC: ;
]]) ]])
AT_BISON_CHECK([input.y], [1], [], AT_BISON_CHECK([input.y], [1], [],
[[input.y:3.1-4: rule given for PREC, which is a token [[input.y:3.1-4: error: rule given for PREC, which is a token
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -948,10 +948,10 @@ AT_DATA([input-c.y],
start: ; start: ;
]]) ]])
AT_BISON_CHECK([[input-c.y]], [[1]], [], AT_BISON_CHECK([[input-c.y]], [[1]], [],
[[input-c.y:1.7: %code qualifier 'q' is not used [[input-c.y:1.7: error: %code qualifier 'q' is not used
input-c.y:2.7-9: %code qualifier 'bad' is not used input-c.y:2.7-9: error: %code qualifier 'bad' is not used
input-c.y:3.7-9: %code qualifier 'bad' is not used input-c.y:3.7-9: error: %code qualifier 'bad' is not used
input-c.y:4.7-12: %code qualifier 'format' is not used input-c.y:4.7-12: error: %code qualifier 'format' is not used
]]) ]])
AT_DATA([input-c-glr.y], AT_DATA([input-c-glr.y],
@@ -962,9 +962,9 @@ AT_DATA([input-c-glr.y],
start: ; start: ;
]]) ]])
AT_BISON_CHECK([[input-c-glr.y]], [[1]], [], AT_BISON_CHECK([[input-c-glr.y]], [[1]], [],
[[input-c-glr.y:1.7: %code qualifier 'q' is not used [[input-c-glr.y:1.7: error: %code qualifier 'q' is not used
input-c-glr.y:2.7-9: %code qualifier 'bad' is not used input-c-glr.y:2.7-9: error: %code qualifier 'bad' is not used
input-c-glr.y:3.8-10: %code qualifier 'bad' is not used input-c-glr.y:3.8-10: error: %code qualifier 'bad' is not used
]]) ]])
AT_DATA([input-c++.y], AT_DATA([input-c++.y],
@@ -975,9 +975,9 @@ AT_DATA([input-c++.y],
start: ; start: ;
]]) ]])
AT_BISON_CHECK([[input-c++.y]], [[1]], [], AT_BISON_CHECK([[input-c++.y]], [[1]], [],
[[input-c++.y:1.7: %code qualifier 'q' is not used [[input-c++.y:1.7: error: %code qualifier 'q' is not used
input-c++.y:2.7-9: %code qualifier 'bad' is not used input-c++.y:2.7-9: error: %code qualifier 'bad' is not used
input-c++.y:3.8: %code qualifier 'q' is not used input-c++.y:3.8: error: %code qualifier 'q' is not used
]]) ]])
AT_DATA([input-c++-glr.y], AT_DATA([input-c++-glr.y],
@@ -988,9 +988,9 @@ AT_DATA([input-c++-glr.y],
start: ; start: ;
]]) ]])
AT_BISON_CHECK([[input-c++-glr.y]], [[1]], [], AT_BISON_CHECK([[input-c++-glr.y]], [[1]], [],
[[input-c++-glr.y:1.7-9: %code qualifier 'bad' is not used [[input-c++-glr.y:1.7-9: error: %code qualifier 'bad' is not used
input-c++-glr.y:2.7: %code qualifier 'q' is not used input-c++-glr.y:2.7: error: %code qualifier 'q' is not used
input-c++-glr.y:3.7: %code qualifier 'q' is not used input-c++-glr.y:3.7: error: %code qualifier 'q' is not used
]]) ]])
AT_DATA([special-char-@@.y], AT_DATA([special-char-@@.y],
@@ -1001,9 +1001,9 @@ AT_DATA([special-char-@@.y],
start: ; start: ;
]]) ]])
AT_BISON_CHECK([[special-char-@@.y]], [[1]], [], AT_BISON_CHECK([[special-char-@@.y]], [[1]], [],
[[special-char-@@.y:1.7-9: %code qualifier 'bad' is not used [[special-char-@@.y:1.7-9: error: %code qualifier 'bad' is not used
special-char-@@.y:2.7: %code qualifier 'q' is not used special-char-@@.y:2.7: error: %code qualifier 'q' is not used
special-char-@@.y:3.7: %code qualifier 'q' is not used special-char-@@.y:3.7: error: %code qualifier 'q' is not used
]]) ]])
AT_DATA([special-char-@:>@.y], AT_DATA([special-char-@:>@.y],
@@ -1014,9 +1014,9 @@ AT_DATA([special-char-@:>@.y],
start: ; start: ;
]]) ]])
AT_BISON_CHECK([[special-char-@:>@.y]], [[1]], [], AT_BISON_CHECK([[special-char-@:>@.y]], [[1]], [],
[[special-char-@:>@.y:1.7-9: %code qualifier 'bad' is not used [[special-char-@:>@.y:1.7-9: error: %code qualifier 'bad' is not used
special-char-@:>@.y:2.7: %code qualifier 'q' is not used special-char-@:>@.y:2.7: error: %code qualifier 'q' is not used
special-char-@:>@.y:3.7: %code qualifier 'q' is not used special-char-@:>@.y:3.7: error: %code qualifier 'q' is not used
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -1039,10 +1039,10 @@ start: ;
]]) ]])
AT_BISON_CHECK([[input-redefined.y]], [[1]], [], AT_BISON_CHECK([[input-redefined.y]], [[1]], [],
[[input-redefined.y:2.9-11: %define variable 'var' redefined [[input-redefined.y:2.9-11: error: %define variable 'var' redefined
input-redefined.y:1.9-11: previous definition input-redefined.y:1.9-11: previous definition
input-redefined.y:3.10-12: %define variable 'var' redefined input-redefined.y:3.10-12: error: %define variable 'var' redefined
input-redefined.y:2.9-11: previous definition input-redefined.y:2.9-11: previous definition
]]) ]])
AT_DATA([input-unused.y], AT_DATA([input-unused.y],
@@ -1052,7 +1052,7 @@ start: ;
]]) ]])
AT_BISON_CHECK([[input-unused.y]], [[1]], [], AT_BISON_CHECK([[input-unused.y]], [[1]], [],
[[input-unused.y:1.9-11: %define variable 'var' is not used [[input-unused.y:1.9-11: error: %define variable 'var' is not used
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -1096,8 +1096,8 @@ AT_DATA([[input-dg.y]],
start: ; start: ;
]]) ]])
AT_BISON_CHECK([[-Dvar=cmd-d input-dg.y]], [[1]], [], AT_BISON_CHECK([[-Dvar=cmd-d input-dg.y]], [[1]], [],
[[input-dg.y:1.9-11: %define variable 'var' redefined [[input-dg.y:1.9-11: error: %define variable 'var' redefined
<command line>:2: previous definition <command line>:2: previous definition
]]) ]])
AT_DATA([[input-unused.y]], AT_DATA([[input-unused.y]],
@@ -1105,8 +1105,8 @@ AT_DATA([[input-unused.y]],
start: ; start: ;
]]) ]])
AT_BISON_CHECK([[-Dunused-d -Funused-f input-unused.y]], [[1]], [], AT_BISON_CHECK([[-Dunused-d -Funused-f input-unused.y]], [[1]], [],
[[<command line>:2: %define variable 'unused-d' is not used [[<command line>:2: error: %define variable 'unused-d' is not used
<command line>:3: %define variable 'unused-f' is not used <command line>:3: error: %define variable 'unused-f' is not used
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -1126,7 +1126,7 @@ start: ;
]]) ]])
AT_BISON_CHECK([[Input.y]], [1], [], AT_BISON_CHECK([[Input.y]], [1], [],
[[Input.y:2.9-14: invalid value for %define Boolean variable 'public' [[Input.y:2.9-14: error: invalid value for %define Boolean variable 'public'
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -1144,23 +1144,24 @@ AT_DATA([[input.y]],
start: ; start: ;
]]) ]])
AT_BISON_CHECK([[input.y]], [[1]], [[]], AT_BISON_CHECK([[input.y]], [[1]], [[]],
[[input.y:1.9-29: invalid value for %define variable 'lr.default-reductions': 'bogus' [[input.y:1.9-29: error: invalid value for %define variable 'lr.default-reductions': 'bogus'
input.y:1.9-29: accepted value: 'most' input.y:1.9-29: accepted value: 'most'
input.y:1.9-29: accepted value: 'consistent' input.y:1.9-29: accepted value: 'consistent'
input.y:1.9-29: accepted value: 'accepting' input.y:1.9-29: accepted value: 'accepting'
]]) ]])
# Back-end. # Back-end.
# FIXME: these should be indented, but we shouldn't mess with the m4 yet
AT_DATA([[input.y]], AT_DATA([[input.y]],
[[%define api.push-pull neither [[%define api.push-pull neither
%% %%
start: ; start: ;
]]) ]])
AT_BISON_CHECK([[input.y]], [1], [], AT_BISON_CHECK([[input.y]], [1], [],
[[input.y:1.9-21: invalid value for %define variable 'api.push-pull': 'neither' [[input.y:1.9-21: error: invalid value for %define variable 'api.push-pull': 'neither'
input.y:1.9-21: accepted value: 'pull' input.y:1.9-21: error: accepted value: 'pull'
input.y:1.9-21: accepted value: 'push' input.y:1.9-21: error: accepted value: 'push'
input.y:1.9-21: accepted value: 'both' input.y:1.9-21: error: accepted value: 'both'
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -1181,10 +1182,10 @@ start: ;
]]) ]])
AT_BISON_CHECK([[input.y]], [1], [], AT_BISON_CHECK([[input.y]], [1], [],
[[input.y:1.9-21: warning: deprecated %define variable name: 'api.push_pull', use 'api.push-pull' [-Wdeprecated] [[input.y:1.9-21: warning: deprecated %define variable name: 'api.push_pull', use 'api.push-pull' [-Wdeprecated]
input.y:1.9-21: invalid value for %define variable 'api.push-pull': 'neither' input.y:1.9-21: error: invalid value for %define variable 'api.push-pull': 'neither'
input.y:1.9-21: accepted value: 'pull' input.y:1.9-21: error: accepted value: 'pull'
input.y:1.9-21: accepted value: 'push' input.y:1.9-21: error: accepted value: 'push'
input.y:1.9-21: accepted value: 'both' input.y:1.9-21: error: accepted value: 'both'
]]) ]])
AT_DATA([[input.y]], AT_DATA([[input.y]],
@@ -1194,7 +1195,7 @@ start: ;
]]) ]])
AT_BISON_CHECK([[input.y]], [1], [], AT_BISON_CHECK([[input.y]], [1], [],
[[input.y:1.9-34: warning: deprecated %define variable name: 'lr.keep_unreachable_states', use 'lr.keep-unreachable-states' [-Wdeprecated] [[input.y:1.9-34: warning: deprecated %define variable name: 'lr.keep_unreachable_states', use 'lr.keep-unreachable-states' [-Wdeprecated]
input.y:1.9-34: invalid value for %define Boolean variable 'lr.keep-unreachable-states' input.y:1.9-34: error: invalid value for %define Boolean variable 'lr.keep-unreachable-states'
]]) ]])
AT_DATA([[input.y]], AT_DATA([[input.y]],
@@ -1205,8 +1206,8 @@ start: ;
]]) ]])
AT_BISON_CHECK([[input.y]], [1], [], AT_BISON_CHECK([[input.y]], [1], [],
[[input.y:1.9-17: warning: deprecated %define variable name: 'namespace', use 'api.namespace' [-Wdeprecated] [[input.y:1.9-17: warning: deprecated %define variable name: 'namespace', use 'api.namespace' [-Wdeprecated]
input.y:2.9-21: %define variable 'api.namespace' redefined input.y:2.9-21: error: %define variable 'api.namespace' redefined
input.y:1.9-17: previous definition input.y:1.9-17: previous definition
]]) ]])
AT_DATA([[input.y]], AT_DATA([[input.y]],
@@ -1215,7 +1216,7 @@ AT_DATA([[input.y]],
start: ; start: ;
]]) ]])
AT_BISON_CHECK([[input.y]], [[1]], [], AT_BISON_CHECK([[input.y]], [[1]], [],
[[input.y:1.9-15: %define variable 'foo_bar' is not used [[input.y:1.9-15: error: %define variable 'foo_bar' is not used
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -1240,7 +1241,7 @@ start: ;
]]) ]])
AT_BISON_CHECK([[input.y]], [[1]], [], AT_BISON_CHECK([[input.y]], [[1]], [],
[[input.y:1.9-16: %define variable 'api.pure' is not used [[input.y:1.9-16: error: %define variable 'api.pure' is not used
]]) ]])
]) ])
@@ -1274,7 +1275,7 @@ start: ;
AT_BISON_CHECK([[input.y]], [1], [], AT_BISON_CHECK([[input.y]], [1], [],
[m4_foreach([b4_arg], m4_dquote(m4_shift($@)), [m4_foreach([b4_arg], m4_dquote(m4_shift($@)),
[[input.y:3.9-21: ]b4_arg[ [[input.y:3.9-21: error: ]b4_arg[
]])]) ]])])
]) ])
@@ -1325,9 +1326,9 @@ AT_CHECK([[perl -e "print 'start: \'';" >> empty.y || exit 77]])
AT_BISON_CHECK([empty.y], [1], [], AT_BISON_CHECK([empty.y], [1], [],
[[empty.y:2.8-9: warning: empty character literal [-Wother] [[empty.y:2.8-9: warning: empty character literal [-Wother]
empty.y:3.8-4.0: warning: empty character literal [-Wother] empty.y:3.8-4.0: warning: empty character literal [-Wother]
empty.y:3.8-4.0: missing "'" at end of line empty.y:3.8-4.0: error: missing "'" at end of line
empty.y:4.8: warning: empty character literal [-Wother] empty.y:4.8: warning: empty character literal [-Wother]
empty.y:4.8: missing "'" at end of file empty.y:4.8: error: missing "'" at end of file
]]) ]])
AT_DATA([two.y], AT_DATA([two.y],
@@ -1340,9 +1341,9 @@ AT_CHECK([[perl -e "print 'start: \'ab';" >> two.y || exit 77]])
AT_BISON_CHECK([two.y], [1], [], AT_BISON_CHECK([two.y], [1], [],
[[two.y:2.8-11: warning: extra characters in character literal [-Wother] [[two.y:2.8-11: warning: extra characters in character literal [-Wother]
two.y:3.8-4.0: warning: extra characters in character literal [-Wother] two.y:3.8-4.0: warning: extra characters in character literal [-Wother]
two.y:3.8-4.0: missing "'" at end of line two.y:3.8-4.0: error: missing "'" at end of line
two.y:4.8-10: warning: extra characters in character literal [-Wother] two.y:4.8-10: warning: extra characters in character literal [-Wother]
two.y:4.8-10: missing "'" at end of file two.y:4.8-10: error: missing "'" at end of file
]]) ]])
AT_DATA([three.y], AT_DATA([three.y],
@@ -1355,9 +1356,9 @@ AT_CHECK([[perl -e "print 'start: \'abc';" >> three.y || exit 77]])
AT_BISON_CHECK([three.y], [1], [], AT_BISON_CHECK([three.y], [1], [],
[[three.y:2.8-12: warning: extra characters in character literal [-Wother] [[three.y:2.8-12: warning: extra characters in character literal [-Wother]
three.y:3.8-4.0: warning: extra characters in character literal [-Wother] three.y:3.8-4.0: warning: extra characters in character literal [-Wother]
three.y:3.8-4.0: missing "'" at end of line three.y:3.8-4.0: error: missing "'" at end of line
three.y:4.8-11: warning: extra characters in character literal [-Wother] three.y:4.8-11: warning: extra characters in character literal [-Wother]
three.y:4.8-11: missing "'" at end of file three.y:4.8-11: error: missing "'" at end of file
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -1383,30 +1384,30 @@ AT_CHECK([[perl -e 'print "start: \"\\\t\\\f\\\0\\\1\" ;";' >> input.y \
|| exit 77]]) || exit 77]])
AT_BISON_CHECK([input.y], [1], [], AT_BISON_CHECK([input.y], [1], [],
[[input.y:2.9-12: invalid number after \-escape: 777 [[input.y:2.9-12: error: invalid number after \-escape: 777
input.y:2.8-13: warning: empty character literal [-Wother] input.y:2.8-13: warning: empty character literal [-Wother]
input.y:2.16-17: invalid number after \-escape: 0 input.y:2.16-17: error: invalid number after \-escape: 0
input.y:2.15-18: warning: empty character literal [-Wother] input.y:2.15-18: warning: empty character literal [-Wother]
input.y:2.21-25: invalid number after \-escape: xfff input.y:2.21-25: error: invalid number after \-escape: xfff
input.y:2.20-26: warning: empty character literal [-Wother] input.y:2.20-26: warning: empty character literal [-Wother]
input.y:2.29-31: invalid number after \-escape: x0 input.y:2.29-31: error: invalid number after \-escape: x0
input.y:2.28-32: warning: empty character literal [-Wother] input.y:2.28-32: warning: empty character literal [-Wother]
input.y:3.9-14: invalid number after \-escape: uffff input.y:3.9-14: error: invalid number after \-escape: uffff
input.y:3.8-15: warning: empty character literal [-Wother] input.y:3.8-15: warning: empty character literal [-Wother]
input.y:3.18-23: invalid number after \-escape: u0000 input.y:3.18-23: error: invalid number after \-escape: u0000
input.y:3.17-24: warning: empty character literal [-Wother] input.y:3.17-24: warning: empty character literal [-Wother]
input.y:3.27-36: invalid number after \-escape: Uffffffff input.y:3.27-36: error: invalid number after \-escape: Uffffffff
input.y:3.26-37: warning: empty character literal [-Wother] input.y:3.26-37: warning: empty character literal [-Wother]
input.y:3.40-49: invalid number after \-escape: U00000000 input.y:3.40-49: error: invalid number after \-escape: U00000000
input.y:3.39-50: warning: empty character literal [-Wother] input.y:3.39-50: warning: empty character literal [-Wother]
input.y:4.9-10: invalid character after \-escape: ' ' input.y:4.9-10: error: invalid character after \-escape: ' '
input.y:4.8-11: warning: empty character literal [-Wother] input.y:4.8-11: warning: empty character literal [-Wother]
input.y:4.14-15: invalid character after \-escape: A input.y:4.14-15: error: invalid character after \-escape: A
input.y:4.13-16: warning: empty character literal [-Wother] input.y:4.13-16: warning: empty character literal [-Wother]
input.y:5.9-16: invalid character after \-escape: \t input.y:5.9-16: error: invalid character after \-escape: \t
input.y:5.17: invalid character after \-escape: \f input.y:5.17: error: invalid character after \-escape: \f
input.y:5.18: invalid character after \-escape: \0 input.y:5.18: error: invalid character after \-escape: \0
input.y:5.19: invalid character after \-escape: \001 input.y:5.19: error: invalid character after \-escape: \001
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -1425,11 +1426,11 @@ start: ;
# parse.lac.* options are useless if LAC isn't actually activated. # parse.lac.* options are useless if LAC isn't actually activated.
AT_BISON_CHECK([[-Dparse.lac.es-capacity-initial=1 input.y]], AT_BISON_CHECK([[-Dparse.lac.es-capacity-initial=1 input.y]],
[[1]], [], [[1]], [],
[[<command line>:2: %define variable 'parse.lac.es-capacity-initial' is not used [[<command line>:2: error: %define variable 'parse.lac.es-capacity-initial' is not used
]]) ]])
AT_BISON_CHECK([[-Dparse.lac.memory-trace=full input.y]], AT_BISON_CHECK([[-Dparse.lac.memory-trace=full input.y]],
[[1]], [], [[1]], [],
[[<command line>:2: %define variable 'parse.lac.memory-trace' is not used [[<command line>:2: error: %define variable 'parse.lac.memory-trace' is not used
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -1483,7 +1484,7 @@ m4_pushdef([AT_TEST],
exp:; exp:;
]]) ]])
AT_BISON_CHECK([[$2 input.y]], [[1]], [[]], AT_BISON_CHECK([[$2 input.y]], [[1]], [[]],
[[$3: '%name-prefix' and '%define api.prefix' cannot be used together [[$3: error: '%name-prefix' and '%define api.prefix' cannot be used together
]]) ]])
]) ])

View File

@@ -251,16 +251,16 @@ exp:
]]) ]])
AT_BISON_CHECK([-o test.c test.y], 1, [], AT_BISON_CHECK([-o test.c test.y], 1, [],
[[test.y:50.51-60: invalid reference: '$<ival>lo9' [[test.y:50.51-60: error: invalid reference: '$<ival>lo9'
test.y:50.3-68: symbol not found in production: lo9 test.y:50.3-68: symbol not found in production: lo9
test.y:51.51-60: warning: misleading reference: '$<ival>exp' [-Wother] test.y:51.51-60: warning: misleading reference: '$<ival>exp' [-Wother]
test.y:42.1-3: warning: refers to: $exp at $$ [-Wother] test.y:42.1-3: refers to: $exp at $$ [-Wother]
test.y:51.7: warning: possibly meant: $x, hiding $exp at $1 [-Wother] test.y:51.7: possibly meant: $x, hiding $exp at $1 [-Wother]
test.y:51.41: warning: possibly meant: $r, hiding $exp at $4 [-Wother] test.y:51.41: possibly meant: $r, hiding $exp at $4 [-Wother]
test.y:52.51-52: $l of 'exp' has no declared type test.y:52.51-52: error: $l of 'exp' has no declared type
test.y:55.46-49: invalid reference: '$r12' test.y:55.46-49: error: invalid reference: '$r12'
test.y:55.3-53: symbol not found in production: r12 test.y:55.3-53: symbol not found in production: r12
test.y:56.29-33: invalid reference: '$expo' test.y:56.29-33: error: invalid reference: '$expo'
test.y:56.3-46: symbol not found in production: expo test.y:56.3-46: symbol not found in production: expo
]]) ]])
AT_BISON_OPTION_POPDEFS AT_BISON_OPTION_POPDEFS
@@ -278,8 +278,8 @@ foo.bar: '2'
]]) ]])
AT_BISON_CHECK([-o test.c test.y], 0, [], AT_BISON_CHECK([-o test.c test.y], 0, [],
[[test.y:11.22-29: warning: misleading reference: '$foo.bar' [-Wother] [[test.y:11.22-29: warning: misleading reference: '$foo.bar' [-Wother]
test.y:11.8-10: warning: refers to: $foo at $1 [-Wother] test.y:11.8-10: refers to: $foo at $1 [-Wother]
test.y:11.12-18: warning: possibly meant: $[foo.bar] at $2 [-Wother] test.y:11.12-18: possibly meant: $[foo.bar] at $2 [-Wother]
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -353,43 +353,43 @@ factor: '(' expr ')' { $$ = $2; }
; ;
]]) ]])
AT_BISON_CHECK([-o test.c test.y], 1, [], AT_BISON_CHECK([-o test.c test.y], 1, [],
[[test.y:24.36-41: invalid reference: '$cond1' [[test.y:24.36-41: error: invalid reference: '$cond1'
test.y:23.11-24.62: symbol not found in production: cond1 test.y:23.11-24.62: symbol not found in production: cond1
test.y:26.43-53: invalid reference: '$stmt.field' test.y:26.43-53: error: invalid reference: '$stmt.field'
test.y:25.11-26.60: symbol not found in production: stmt test.y:25.11-26.60: symbol not found in production: stmt
test.y:25.35-38: possibly meant: $then.field, hiding $stmt.field at $4 test.y:25.35-38: possibly meant: $then.field, hiding $stmt.field at $4
test.y:28.43-52: invalid reference: '$stmt.list' test.y:28.43-52: error: invalid reference: '$stmt.list'
test.y:27.11-28.59: symbol not found in production: stmt test.y:27.11-28.59: symbol not found in production: stmt
test.y:27.30-38: possibly meant: $[stmt.list] at $4 test.y:27.30-38: possibly meant: $[stmt.list] at $4
test.y:30.43-46: ambiguous reference: '$xyz' test.y:30.43-46: error: ambiguous reference: '$xyz'
test.y:29.35-37: refers to: $xyz at $4 test.y:29.35-37: refers to: $xyz at $4
test.y:29.50-52: refers to: $xyz at $6 test.y:29.50-52: refers to: $xyz at $6
test.y:32.43-52: invalid reference: '$stmt.list' test.y:32.43-52: error: invalid reference: '$stmt.list'
test.y:31.11-32.63: symbol not found in production: stmt test.y:31.11-32.63: symbol not found in production: stmt
test.y:31.40-43: possibly meant: $then, hiding $[stmt.list] at $4 test.y:31.40-43: possibly meant: $then, hiding $[stmt.list] at $4
test.y:31.61-64: possibly meant: $else, hiding $[stmt.list] at $6 test.y:31.61-64: possibly meant: $else, hiding $[stmt.list] at $6
test.y:34.43-58: invalid reference: '$stmt.list.field' test.y:34.43-58: error: invalid reference: '$stmt.list.field'
test.y:33.11-34.69: symbol not found in production: stmt test.y:33.11-34.69: symbol not found in production: stmt
test.y:33.40-43: possibly meant: $then.field, hiding $[stmt.list].field at $4 test.y:33.40-43: possibly meant: $then.field, hiding $[stmt.list].field at $4
test.y:33.61-64: possibly meant: $else.field, hiding $[stmt.list].field at $6 test.y:33.61-64: possibly meant: $else.field, hiding $[stmt.list].field at $6
test.y:36.43-54: invalid reference: '$[stmt.list]' test.y:36.43-54: error: invalid reference: '$[stmt.list]'
test.y:35.11-36.71: symbol not found in production: stmt.list test.y:35.11-36.71: symbol not found in production: stmt.list
test.y:35.40-43: possibly meant: $then, hiding $[stmt.list] at $4 test.y:35.40-43: possibly meant: $then, hiding $[stmt.list] at $4
test.y:35.61-64: possibly meant: $else, hiding $[stmt.list] at $6 test.y:35.61-64: possibly meant: $else, hiding $[stmt.list] at $6
test.y:38.43-49: invalid reference: '$then.1' test.y:38.43-49: error: invalid reference: '$then.1'
test.y:37.11-38.60: symbol not found in production: then test.y:37.11-38.60: symbol not found in production: then
test.y:37.40-45: possibly meant: $[then.1] at $4 test.y:37.40-45: possibly meant: $[then.1] at $4
test.y:40.43-55: invalid reference: '$then.1.field' test.y:40.43-55: error: invalid reference: '$then.1.field'
test.y:39.11-40.66: symbol not found in production: then test.y:39.11-40.66: symbol not found in production: then
test.y:39.40-45: possibly meant: $[then.1].field at $4 test.y:39.40-45: possibly meant: $[then.1].field at $4
test.y:42.44-50: invalid reference: '$stmt.x' test.y:42.44-50: error: invalid reference: '$stmt.x'
test.y:41.12-42.57: symbol not found in production: stmt test.y:41.12-42.57: symbol not found in production: stmt
test.y:41.36-41: possibly meant: $[stmt.x].x, hiding $stmt.x at $4 test.y:41.36-41: possibly meant: $[stmt.x].x, hiding $stmt.x at $4
test.y:41.36-41: possibly meant: $[stmt.x] at $4 test.y:41.36-41: possibly meant: $[stmt.x] at $4
test.y:44.13-22: invalid reference: '$if-stmt-a' test.y:44.13-22: error: invalid reference: '$if-stmt-a'
test.y:43.12-44.59: symbol not found in production: if test.y:43.12-44.59: symbol not found in production: if
test.y:43.1-9: possibly meant: $[if-stmt-a] at $$ test.y:43.1-9: possibly meant: $[if-stmt-a] at $$
test.y:46.46-54: invalid reference: '$then-a.f' test.y:46.46-54: error: invalid reference: '$then-a.f'
test.y:45.12-46.65: symbol not found in production: then test.y:45.12-46.65: symbol not found in production: then
test.y:45.41-46: possibly meant: $[then-a].f at $4 test.y:45.41-46: possibly meant: $[then-a].f at $4
]]) ]])
@@ -405,7 +405,7 @@ start: foo[] bar
{ s = $foo; } { s = $foo; }
]]) ]])
AT_BISON_CHECK([-o test.c test.y], 1, [], AT_BISON_CHECK([-o test.c test.y], 1, [],
[[test.y:11.12: an identifier expected [[test.y:11.12: error: an identifier expected
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -419,7 +419,7 @@ start: foo[ a d ] bar
{ s = $foo; } { s = $foo; }
]]) ]])
AT_BISON_CHECK([-o test.c test.y], 1, [], AT_BISON_CHECK([-o test.c test.y], 1, [],
[[test.y:11.15: unexpected identifier in bracketed name: 'd' [[test.y:11.15: error: unexpected identifier in bracketed name: 'd'
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -433,7 +433,7 @@ start: foo[/* comment */] bar
{ s = $foo; } { s = $foo; }
]]) ]])
AT_BISON_CHECK([-o test.c test.y], 1, [], AT_BISON_CHECK([-o test.c test.y], 1, [],
[[test.y:11.25: an identifier expected [[test.y:11.25: error: an identifier expected
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -447,10 +447,10 @@ start: foo[ /* aaa */ *&-.+ ] bar
{ s = $foo; } { s = $foo; }
]]) ]])
AT_BISON_CHECK([-o test.c test.y], 1, [], AT_BISON_CHECK([-o test.c test.y], 1, [],
[[test.y:11.23: invalid character in bracketed name: '*' [[test.y:11.23: error: invalid character in bracketed name: '*'
test.y:11.24: invalid character in bracketed name: '&' test.y:11.24: error: invalid character in bracketed name: '&'
test.y:11.25: invalid character in bracketed name: '-' test.y:11.25: error: invalid character in bracketed name: '-'
test.y:11.27: invalid character in bracketed name: '+' test.y:11.27: error: invalid character in bracketed name: '+'
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -463,7 +463,7 @@ AT_DATA_GRAMMAR([test.y],
start[a s]: foo; start[a s]: foo;
]]) ]])
AT_BISON_CHECK([-o test.c test.y], 1, [], AT_BISON_CHECK([-o test.c test.y], 1, [],
[[test.y:11.9: unexpected identifier in bracketed name: 's' [[test.y:11.9: error: unexpected identifier in bracketed name: 's'
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -510,37 +510,37 @@ sym_a: 'a';
sym_b: 'b'; sym_b: 'b';
]]) ]])
AT_BISON_CHECK([-o test.c test.y], 1, [], AT_BISON_CHECK([-o test.c test.y], 1, [],
[[test.y:12.22-31: invalid reference: '$sym.field' [[test.y:12.22-31: error: invalid reference: '$sym.field'
test.y:12.3-35: symbol not found in production: sym test.y:12.3-35: symbol not found in production: sym
test.y:13.22-35: invalid reference: '$<aa>sym.field' test.y:13.22-35: error: invalid reference: '$<aa>sym.field'
test.y:13.3-39: symbol not found in production: sym test.y:13.3-39: symbol not found in production: sym
test.y:14.22-33: invalid reference: '$[sym.field]' test.y:14.22-33: error: invalid reference: '$[sym.field]'
test.y:14.3-37: symbol not found in production: sym.field test.y:14.3-37: symbol not found in production: sym.field
test.y:15.22-37: invalid reference: '$<aa>[sym.field]' test.y:15.22-37: error: invalid reference: '$<aa>[sym.field]'
test.y:15.3-41: symbol not found in production: sym.field test.y:15.3-41: symbol not found in production: sym.field
test.y:16.22-25: invalid reference: '$sym' test.y:16.22-25: error: invalid reference: '$sym'
test.y:16.3-29: symbol not found in production: sym test.y:16.3-29: symbol not found in production: sym
test.y:17.22-29: invalid reference: '$<aa>sym' test.y:17.22-29: error: invalid reference: '$<aa>sym'
test.y:17.3-33: symbol not found in production: sym test.y:17.3-33: symbol not found in production: sym
test.y:18.22-27: invalid reference: '$[sym]' test.y:18.22-27: error: invalid reference: '$[sym]'
test.y:18.3-65: symbol not found in production before $3: sym test.y:18.3-65: symbol not found in production before $3: sym
test.y:18.52-61: invalid reference: '$<aa>[sym]' test.y:18.52-61: error: invalid reference: '$<aa>[sym]'
test.y:18.3-65: symbol not found in production: sym test.y:18.3-65: symbol not found in production: sym
test.y:22.22-31: invalid reference: '$sym-field' test.y:22.22-31: error: invalid reference: '$sym-field'
test.y:22.3-35: symbol not found in production: sym test.y:22.3-35: symbol not found in production: sym
test.y:23.22-35: invalid reference: '$<aa>sym-field' test.y:23.22-35: error: invalid reference: '$<aa>sym-field'
test.y:23.3-39: symbol not found in production: sym test.y:23.3-39: symbol not found in production: sym
test.y:24.22-33: invalid reference: '$[sym-field]' test.y:24.22-33: error: invalid reference: '$[sym-field]'
test.y:24.3-37: symbol not found in production: sym-field test.y:24.3-37: symbol not found in production: sym-field
test.y:25.22-37: invalid reference: '$<aa>[sym-field]' test.y:25.22-37: error: invalid reference: '$<aa>[sym-field]'
test.y:25.3-41: symbol not found in production: sym-field test.y:25.3-41: symbol not found in production: sym-field
test.y:26.22-25: invalid reference: '$sym' test.y:26.22-25: error: invalid reference: '$sym'
test.y:26.3-29: symbol not found in production: sym test.y:26.3-29: symbol not found in production: sym
test.y:27.22-29: invalid reference: '$<aa>sym' test.y:27.22-29: error: invalid reference: '$<aa>sym'
test.y:27.3-33: symbol not found in production: sym test.y:27.3-33: symbol not found in production: sym
test.y:28.22-27: invalid reference: '$[sym]' test.y:28.22-27: error: invalid reference: '$[sym]'
test.y:28.3-65: symbol not found in production before $3: sym test.y:28.3-65: symbol not found in production before $3: sym
test.y:28.52-61: invalid reference: '$<aa>[sym]' test.y:28.52-61: error: invalid reference: '$<aa>[sym]'
test.y:28.3-65: symbol not found in production: sym test.y:28.3-65: symbol not found in production: sym
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -558,10 +558,10 @@ start:
.field: ; .field: ;
]]) ]])
AT_BISON_CHECK([[test.y]], [[1]], [], AT_BISON_CHECK([[test.y]], [[1]], [],
[[test.y:4.12-18: invalid reference: '$.field' [[test.y:4.12-18: error: invalid reference: '$.field'
test.y:4.13: syntax error after '$', expecting integer, letter, '_', '@<:@', or '$' test.y:4.13: syntax error after '$', expecting integer, letter, '_', '@<:@', or '$'
test.y:4.3-8: possibly meant: $[.field] at $1 test.y:4.3-8: possibly meant: $[.field] at $1
test.y:5.12-18: invalid reference: '@.field' test.y:5.12-18: error: invalid reference: '@.field'
test.y:5.13: syntax error after '@', expecting integer, letter, '_', '@<:@', or '$' test.y:5.13: syntax error after '@', expecting integer, letter, '_', '@<:@', or '$'
]]) ]])
AT_DATA([[test.y]], AT_DATA([[test.y]],

View File

@@ -191,7 +191,7 @@ AT_CHECK_CONFLICTING_OUTPUT([foo.y],
]]) ]])
AT_CHECK_CONFLICTING_OUTPUT([foo.y], [], [-o foo.y], AT_CHECK_CONFLICTING_OUTPUT([foo.y], [], [-o foo.y],
[[foo.y: refusing to overwrite the input file 'foo.y' [[foo.y: error: refusing to overwrite the input file 'foo.y'
]], 1) ]], 1)

View File

@@ -153,7 +153,7 @@ start: ;
AT_BISON_OPTION_POPDEFS AT_BISON_OPTION_POPDEFS
AT_BISON_CHECK([[input.y]], [[1]], [], AT_BISON_CHECK([[input.y]], [[1]], [],
[[input.y:2.9-21: %define variable 'api.push-pull' is not used [[input.y:2.9-21: error: %define variable 'api.push-pull' is not used
]]) ]])
AT_CLEANUP AT_CLEANUP

View File

@@ -401,15 +401,15 @@ default: 'a' }
]]) ]])
AT_BISON_CHECK([input.y], [1], [], AT_BISON_CHECK([input.y], [1], [],
[[input.y:2.1: invalid character: '?' [[input.y:2.1: error: invalid character: '?'
input.y:3.14: invalid character: '}' input.y:3.14: error: invalid character: '}'
input.y:4.1: invalid character: '%' input.y:4.1: error: invalid character: '%'
input.y:4.2: invalid character: '&' input.y:4.2: error: invalid character: '&'
input.y:5.1-17: invalid directive: '%a-does-not-exist' input.y:5.1-17: error: invalid directive: '%a-does-not-exist'
input.y:6.1: invalid character: '%' input.y:6.1: error: invalid character: '%'
input.y:6.2: invalid character: '-' input.y:6.2: error: invalid character: '-'
input.y:7.1-8.0: missing '%}' at end of file input.y:7.1-8.0: error: missing '%}' at end of file
input.y:7.1-8.0: syntax error, unexpected %{...%} input.y:7.1-8.0: error: syntax error, unexpected %{...%}
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -428,7 +428,7 @@ AT_DATA([input.y],
]]) ]])
AT_BISON_CHECK([input.y], [1], [], AT_BISON_CHECK([input.y], [1], [],
[[input.y:3.1-15: syntax error, unexpected %initial-action, expecting {...} [[input.y:3.1-15: error: syntax error, unexpected %initial-action, expecting {...}
]]) ]])
AT_CLEANUP AT_CLEANUP

View File

@@ -157,7 +157,7 @@ start: ;
]]) ]])
AT_BISON_CHECK([[input.y]], [[1]], [[]], AT_BISON_CHECK([[input.y]], [[1]], [[]],
[[<skeleton default value>: invalid value for %define Boolean variable 'foo' [[<skeleton default value>: error: invalid value for %define Boolean variable 'foo'
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -193,8 +193,8 @@ start: ;
AT_BISON_CHECK([[input1.y]], [[1]], [[]], AT_BISON_CHECK([[input1.y]], [[1]], [[]],
[[input1.y: warning: foow fubar [-Wother] [[input1.y: warning: foow fubar [-Wother]
foow.y:2.3-5.3: warning: foowat fubar [-Wother] foow.y:2.3-5.3: warning: foowat fubar [-Wother]
input1.y: fooc fubar input1.y: error: fooc fubar
fooc.y:1.1-10.5: foocat fubar fooc.y:1.1-10.5: error: foocat fubar
input1.y: fatal error: foof fubar input1.y: fatal error: foof fubar
]]) ]])
@@ -264,7 +264,7 @@ start: ;
]]) ]])
AT_BISON_CHECK([[input1.y]], [[1]], [[]], AT_BISON_CHECK([[input1.y]], [[1]], [[]],
[[input1.y: non-fatal error [[input1.y: error: non-fatal error
input1.y: fatal error: M4 should exit immediately here input1.y: fatal error: M4 should exit immediately here
]]) ]])