warning: suggest parenthesis around assignment used as truth value

Ben Abbott bpabbott at mac.com
Thu Mar 12 21:48:37 CDT 2009


On Mar 13, 2009, at 9:40 AM, Rob Mahurin wrote:

> On Mar 12, 2009, at 9:08 PM, Ben Abbott wrote:
>> Can someone explain what this warning is intended to imply?
>>
>> 	warning: suggest parenthesis around assignment used as truth value
>
> This is a gcc warning? The idiom
> 	if (x=1) { ... }
> is legal and useful but often a typo for
> 	if (x==1) { ... }
> Extra parentheses
> 	if ((x=1)) { ... }
> apparently suppress the warning.
>
> Cheers,
> Rob

Actually, it is a warning form Octave's parser (the source is an m- 
file). The warning originates in parse.y

1506 // Maybe print a warning if an assignment expression is used as the
1507 // test in a logical expression.
1508
1509 static void
1510 maybe_warn_assign_as_truth_value (tree_expression *expr)
1511 {
1512   if (expr->is_assignment_expression ()
1513       && expr->paren_count () < 2)
1514     {
1515       warning_with_id
1516         ("Octave:assign-as-truth-value",
1517          "suggest parenthesis around assignment used as truth  
value");
1518     }
1519 }

Your examples do give me some additional context for what is imlied.  
Unfortunately, I've searched my sources and don't see such an instance  
in my if/elseif statments. Further when I convert warnings to errors  
("warning error"), I get what looks like a parser error.

octave:1> warning error
octave:2> help cellstr
error: potential auto-insertion of `,' near line 47 of file /Users/ 
bpabbott/Development/mercurial/octave-3.1.54/scripts/help/which.m
error: called from:
error:   /Users/bpabbott/Development/mercurial/octave-3.1.54/scripts/ 
help/help.m at line 81, column 5
octave:2> help test
error: potential auto-insertion of `,' near line 89 of file /Users/ 
bpabbott/Development/mercurial/octave-3.1.54/scripts/strings/strcat.m
error: called from:
error:   /Users/bpabbott/Development/mercurial/octave-3.1.54/scripts/ 
help/__makeinfo__.m at line 154, column 12
error:   /Users/bpabbott/Development/mercurial/octave-3.1.54/scripts/ 
help/__makeinfo__.m at line 111, column 16
error:   /Users/bpabbott/Development/mercurial/octave-3.1.54/scripts/ 
help/help.m at line 62, column 25
octave:2>

I'll start a new thread for that.

Ben



More information about the Octave-maintainers mailing list