From: Theophile Ranquet Date: Wed, 26 Sep 2012 09:49:18 +0000 (+0200) Subject: errors: indent "result type clash" error context X-Git-Tag: v2.6.90~109 X-Git-Url: https://git.saurik.com/bison.git/commitdiff_plain/24d96dd3ebb49d003c29904fc5152ee5ec220e86 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 --- diff --git a/THANKS b/THANKS index 95acb1e2..8af0abbe 100644 --- a/THANKS +++ b/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: ----- diff --git a/src/complain.h b/src/complain.h index b8935645..997d577b 100644 --- a/src/complain.h +++ b/src/complain.h @@ -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 warnings_flag & warnings_error. This is exported only for the sake of Yacc-compatible conflict reports in conflicts.c. diff --git a/src/reader.c b/src/reader.c index 7dd0aaa4..86fde7b2 100644 --- a/src/reader.c +++ b/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; } diff --git a/tests/glr-regression.at b/tests/glr-regression.at index 07c9fe25..8cea46c9 100644 --- a/tests/glr-regression.at +++ b/tests/glr-regression.at @@ -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': != -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': != -glr-regr18.y:26.18-24: previous declaration +glr-regr18.y:26.18-24: previous declaration ]) AT_CLEANUP