mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-17 16:23:04 +00:00
Warn about unused values.
* src/symlist.h, src/symlist.c (symbol_list, symbol_list_new): Add
a `used' member.
(symbol_list_n_get, symbol_list_n_used_set): New.
(symbol_list_n_type_name_get): Use symbol_list_n_get.
* src/scan-gram.l (handle_action_dollar): Flag used symbols.
* src/reader.c (grammar_current_rule_check): Check that values are
used.
* src/symtab.c (symbol_print): Accept 0.
* tests/existing.at: Remove the type information.
Empty the actions.
Remove useless actions (beware of mid-rule actions: perl -000
-pi -e 's/s*{}(?=[ns]*[|;])//g').
* tests/actions.at (Exotic Dollars): Use unused values.
* tests/calc.at: Likewise.
* tests/glr-regression.at (No users destructors if stack 0 deleted):
Likewise.
* src/gram.c (rule_useful_p, rule_never_reduced_p): Use
rule_useful_p.
This commit is contained in:
18
NEWS
18
NEWS
@@ -3,6 +3,24 @@ Bison News
|
||||
|
||||
Changes in version 2.1a:
|
||||
|
||||
* New warning: unused values
|
||||
Typed right-hand side symbols whose value are not used are reported.
|
||||
For instance
|
||||
|
||||
exp: exp "?" exp ":" exp { $$ = $1 + $3; }
|
||||
| exp "+" exp
|
||||
;
|
||||
|
||||
will trigger a warning about $5 of the first rule, and $3 in the
|
||||
second ($1 is copied to $$ by the default rule). To avoid this
|
||||
warning, let Bison believe the value is used, e.g.
|
||||
|
||||
exp: exp "?" exp ":" exp { $$ = $1 + $3; $5; }
|
||||
| exp "+" exp { $$ = $1; $3; }
|
||||
|
||||
This helps catching lost values and memory leaks: if a value is
|
||||
ignored, its associated memory will never be reclaimed.
|
||||
|
||||
* %destructor vs. YYABORT, YYACCEPT, and YYERROR.
|
||||
Destructors are now called when user code invokes YYABORT, YYACCEPT,
|
||||
and YYERROR, for all objects on the stack, other than objects
|
||||
|
||||
Reference in New Issue
Block a user