* NEWS: Improve wording for unused-value warnings.

This commit is contained in:
Paul Eggert
2005-12-23 00:13:11 +00:00
parent a0af42fce6
commit 721be13c5b
2 changed files with 23 additions and 11 deletions

28
NEWS
View File

@@ -5,21 +5,29 @@ Changes in version 2.1a:
* New warning: unused values
Typed right-hand side symbols whose value are not used are reported.
For instance
For instance:
exp: exp "?" exp ":" exp { $$ = $1 + $3; }
| exp "+" exp
;
exp: exp "?" exp ":" exp { $$ = $1 ? $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.
second ($1 is copied to $$ by the default rule). This example
most likely contains two errors, and should be rewritten as:
exp: exp "?" exp ":" exp { $$ = $1 + $3; $5; }
| exp "+" exp { $$ = $1; $3; }
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.
However, if the original actions were really intended, the warnings
can be suppressed by letting Bison believe the values are used, e.g.:
exp: exp "?" exp ":" exp { $$ = $1 ? $1 : $3; (void) $5; }
| exp "+" exp { $$ = $1; (void) $3; }
;
The warning is intended to help catching lost values and memory leaks.
If a value is ignored, its associated memory typically is not reclaimed.
* %destructor vs. YYABORT, YYACCEPT, and YYERROR.
Destructors are now called when user code invokes YYABORT, YYACCEPT,