mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-16 15:53:03 +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
|
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
|
||||||
@@ -125,6 +126,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:
|
||||||
|
|
||||||
-----
|
-----
|
||||||
|
|||||||
@@ -25,6 +25,9 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
|
/* 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 & warnings_error</tt>. This is exported
|
error if <tt>warnings_flag & warnings_error</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.
|
||||||
|
|||||||
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);
|
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,
|
unsigned indent = 0;
|
||||||
_("result type clash on merge function %s: <%s> != <%s>"),
|
complain_at_indent (declaration_loc, &indent,
|
||||||
quote (merge_function->name), type, merge_function->type);
|
_("result type clash on merge function %s: "
|
||||||
complain_at (merge_function->type_declaration_location,
|
"<%s> != <%s>"),
|
||||||
_("previous declaration"));
|
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 = uniqstr_new (type);
|
||||||
merge_function->type_declaration_location = declaration_loc;
|
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, [],
|
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: 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: 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
|
||||||
|
|||||||
Reference in New Issue
Block a user