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.
This commit is contained in:
Joel E. Denny
2006-07-07 21:25:03 +00:00
parent fab044e6da
commit dd60572a8b
5 changed files with 29 additions and 15 deletions

View File

@@ -1679,15 +1679,18 @@ AT_DATA_GRAMMAR([glr-regr18.y],
%union {
int type1;
int type2;
int type3;
}
%%
sym1: sym2 %merge<merge> { $$ = $1; } ;
sym2: %merge<merge> { $$ = 0; } ;
sym2: sym3 %merge<merge> { $$ = $1; } ;
sym3: %merge<merge> { $$ = 0; } ;
%type <type1> sym1;
%type <type2> sym2;
%type <type3> 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': <type2> != <type1>
glr-regr18.y:25.18-24: warning: first declaration
[glr-regr18.y:27.18-24: warning: result type clash on merge function `merge': <type2> != <type1>
glr-regr18.y:26.18-24: warning: previous declaration
glr-regr18.y:28.13-19: warning: result type clash on merge function `merge': <type3> != <type2>
glr-regr18.y:27.18-24: warning: previous declaration
])
AT_CLEANUP

View File

@@ -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