mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
errors: indent "result type clash" error context
This used to be the format of the error report: input.y:6.5-10: result type clash on merge function 'merge': [...] input.y:2.4-9: previous declaration In order to distinguish the actual error from the context provided, we rather this new output: input.y:6.5-10: result type clash on merge function 'merge': [...] input.y:2.4-9: previous declaration Another patch will introduce an "error: " prefix to all non-indented lines, giving yet better readability to the reports. * src/complain.h (SUB_INDENT): Move to here. * src/reader.c (record_merge_function_type): Use complain_at_indent to output with increased indentation level. * src/scan-code.l (SUB_INDENT): Remove from here. * tests/glr-regression.at: Apply this change. Signed-off-by: Akim Demaille <akim@lrde.epita.fr>
This commit is contained in:
committed by
Akim Demaille
parent
63fec1eeba
commit
24d96dd3eb
2
THANKS
2
THANKS
@@ -102,6 +102,7 @@ Shura debil_urod@ngs.ru
|
||||
Stefano Lattarini stefano.lattarini@gmail.com
|
||||
Steve Murphy murf@parsetree.com
|
||||
Sum Wu sum@geekhouse.org
|
||||
Théophile Ranquet theophile.ranquet@gmail.com
|
||||
Thiru Ramakrishnan thiru.ramakrishnan@gmail.com
|
||||
Tim Josling tej@melbpc.org.au
|
||||
Tim Landscheidt tim@tim-landscheidt.de
|
||||
@@ -125,6 +126,7 @@ thank them! Please, help us keeping this list up to date.
|
||||
|
||||
Local Variables:
|
||||
mode: text
|
||||
coding: utf-8
|
||||
End:
|
||||
|
||||
-----
|
||||
|
||||
@@ -25,6 +25,9 @@
|
||||
extern "C" {
|
||||
# endif
|
||||
|
||||
/* Sub-messages indent. */
|
||||
#define SUB_INDENT (4)
|
||||
|
||||
/** Record that a warning is about to be issued, and treat it as an
|
||||
error if <tt>warnings_flag & warnings_error</tt>. This is exported
|
||||
only for the sake of Yacc-compatible conflict reports in conflicts.c.
|
||||
|
||||
16
src/reader.c
16
src/reader.c
@@ -128,12 +128,16 @@ record_merge_function_type (int merger, uniqstr type, location declaration_loc)
|
||||
aver (merge_function != NULL && merger_find == merger);
|
||||
if (merge_function->type != NULL && !UNIQSTR_EQ (merge_function->type, type))
|
||||
{
|
||||
complain_at (declaration_loc,
|
||||
_("result type clash on merge function %s: <%s> != <%s>"),
|
||||
quote (merge_function->name), type, merge_function->type);
|
||||
complain_at (merge_function->type_declaration_location,
|
||||
_("previous declaration"));
|
||||
}
|
||||
unsigned indent = 0;
|
||||
complain_at_indent (declaration_loc, &indent,
|
||||
_("result type clash on merge function %s: "
|
||||
"<%s> != <%s>"),
|
||||
quote (merge_function->name), type,
|
||||
merge_function->type);
|
||||
indent += SUB_INDENT;
|
||||
complain_at_indent (merge_function->type_declaration_location, &indent,
|
||||
_("previous declaration"));
|
||||
}
|
||||
merge_function->type = uniqstr_new (type);
|
||||
merge_function->type_declaration_location = declaration_loc;
|
||||
}
|
||||
|
||||
@@ -1651,9 +1651,9 @@ AT_BISON_OPTION_POPDEFS
|
||||
|
||||
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: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:26.18-24: previous declaration
|
||||
glr-regr18.y:26.18-24: previous declaration
|
||||
])
|
||||
|
||||
AT_CLEANUP
|
||||
|
||||
Reference in New Issue
Block a user