From 721be13c5b708d14e96f94f825768a77e13131bb Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Fri, 23 Dec 2005 00:13:11 +0000 Subject: [PATCH] * NEWS: Improve wording for unused-value warnings. --- ChangeLog | 6 +++++- NEWS | 28 ++++++++++++++++++---------- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6b584a2d..78f9344f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2005-12-22 Paul Eggert + + * NEWS: Improve wording for unused-value warnings. + 2005-12-22 Akim Demaille * data/lalr1.cc, data/yacc.c, data/glr.c, data/c.m4 @@ -8,7 +12,7 @@ 2005-12-22 Akim Demaille - Warn about unused values. + * NEWS: 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. diff --git a/NEWS b/NEWS index 94e9cc17..176ce6f2 100644 --- a/NEWS +++ b/NEWS @@ -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; } + ; + + 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 + $3; $5; } - | exp "+" exp { $$ = $1; $3; } + exp: exp "?" exp ":" exp { $$ = $1 ? $1 : $3; (void) $5; } + | exp "+" exp { $$ = $1; (void) $3; } + ; - This helps catching lost values and memory leaks: if a value is - ignored, its associated memory will never be reclaimed. + 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, -- 2.45.2