From dd60572a8b54ebc51421448f09f83f39bc0a4229 Mon Sep 17 00:00:00 2001 From: "Joel E. Denny" Date: Fri, 7 Jul 2006 21:25:03 +0000 Subject: [PATCH] In warnings, say "previous declaration" rather than "first declaration". * src/symtab.c (redeclaration): Do that here. * src/reader.c (record_merge_function_type): In the case of a result type clash, report the previous declaration rather than the very first one in the grammar file. * tests/glr-regression.at (Missed %merge type warnings when LHS type is declared later): Add a third declaration to check this behavior. * tests/input.at (Incompatible Aliases): Update output. --- ChangeLog | 12 ++++++++++++ src/reader.c | 11 ++++------- src/symtab.c | 2 +- tests/glr-regression.at | 11 ++++++++--- tests/input.at | 8 ++++---- 5 files changed, 29 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index 614a3982..831687b6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2006-07-07 Joel E. Denny + + In warnings, say "previous declaration" rather than "first + declaration". + * src/symtab.c (redeclaration): Do that here. + * src/reader.c (record_merge_function_type): In the case of a result + type clash, report the previous declaration rather than the very first + one in the grammar file. + * tests/glr-regression.at (Missed %merge type warnings when LHS type is + declared later): Add a third declaration to check this behavior. + * tests/input.at (Incompatible Aliases): Update output. + 2006-06-27 Akim Demaille * doc/Doxyfile.in: New. diff --git a/src/reader.c b/src/reader.c index 31bd536d..e58b0327 100644 --- a/src/reader.c +++ b/src/reader.c @@ -146,19 +146,16 @@ record_merge_function_type (int merger, uniqstr type, location declaration_loc) merge_function = merge_function->next) merger_find += 1; assert (merge_function != NULL && merger_find == merger); - if (merge_function->type == NULL) - { - merge_function->type = uniqstr_new (type); - merge_function->type_declaration_location = declaration_loc; - } - else if (!UNIQSTR_EQ (merge_function->type, type)) + if (merge_function->type != NULL && !UNIQSTR_EQ (merge_function->type, type)) { warn_at (declaration_loc, _("result type clash on merge function `%s': <%s> != <%s>"), merge_function->name, type, merge_function->type); warn_at (merge_function->type_declaration_location, - _("first declaration")); + _("previous declaration")); } + merge_function->type = uniqstr_new (type); + merge_function->type_declaration_location = declaration_loc; } /*--------------------------------------. diff --git a/src/symtab.c b/src/symtab.c index ae0993ee..b71a3fba 100644 --- a/src/symtab.c +++ b/src/symtab.c @@ -108,7 +108,7 @@ static void redeclaration (symbol* s, const char *what, location first, location second) { complain_at (second, _("%s redeclaration for %s"), what, s->tag); - complain_at (first, _("first declaration")); + complain_at (first, _("previous declaration")); } diff --git a/tests/glr-regression.at b/tests/glr-regression.at index b4f65004..23fda14a 100644 --- a/tests/glr-regression.at +++ b/tests/glr-regression.at @@ -1679,15 +1679,18 @@ AT_DATA_GRAMMAR([glr-regr18.y], %union { int type1; int type2; + int type3; } %% sym1: sym2 %merge { $$ = $1; } ; -sym2: %merge { $$ = 0; } ; +sym2: sym3 %merge { $$ = $1; } ; +sym3: %merge { $$ = 0; } ; %type sym1; %type sym2; +%type sym3; %% @@ -1711,8 +1714,10 @@ main (void) ]]) AT_CHECK([[bison -o glr-regr18.c glr-regr18.y]], 0, [], -[glr-regr18.y:26.13-19: warning: result type clash on merge function `merge': != -glr-regr18.y:25.18-24: warning: first declaration +[glr-regr18.y:27.18-24: warning: result type clash on merge function `merge': != +glr-regr18.y:26.18-24: warning: previous declaration +glr-regr18.y:28.13-19: warning: result type clash on merge function `merge': != +glr-regr18.y:27.18-24: warning: previous declaration ]) AT_CLEANUP diff --git a/tests/input.at b/tests/input.at index abbf1f38..fb571ab6 100644 --- a/tests/input.at +++ b/tests/input.at @@ -193,13 +193,13 @@ exp: foo; AT_CHECK([bison input.y], [1], [], [[input.y:8.7-11: %type redeclaration for foo -input.y:3.7-11: first declaration +input.y:3.7-11: previous declaration input.y:10.13-17: %destructor redeclaration for foo -input.y:5.13-17: first declaration +input.y:5.13-17: previous declaration input.y:9.10-14: %printer redeclaration for foo -input.y:4.10-14: first declaration +input.y:4.10-14: previous declaration input.y:11.1-5: %left redeclaration for foo -input.y:6.1-5: first declaration +input.y:6.1-5: previous declaration ]]) AT_CLEANUP -- 2.45.2