[cfe-commits] r92975 - in /cfe/trunk: include/clang/Basic/DiagnosticSemaKinds.td lib/Sema/SemaExpr.cpp test/Sema/parentheses.c test/SemaCXX/warn-assignment-condition.cpp

John McCall rjmccall at apple.com
Thu Jan 7 16:37:13 PST 2010


On Jan 7, 2010, at 4:24 PM, Sean Hunt wrote:

> On 01/07/2010 05:20 PM, Douglas Gregor wrote:
>> Author: dgregor
>> Date: Thu Jan  7 18:20:23 2010
>> New Revision: 92975
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=92975&view=rev
>> Log:
>> Improve the fix-its for -Wparentheses to ensure that the fix-it
>> suggestions follow recovery. Additionally, add a note to these
>> diagnostics which suggests a fix-it for changing the behavior to what
>> the user probably meant. Examples:
>> 
>> t.cpp:2:9: warning:&  has lower precedence than ==; == will be evaluated first
>>       [-Wparentheses]
>>   if (i&  j == k) {
>>         ^~~~~~~~
>>           (     )
>> t.cpp:2:9: note: place parentheses around the&  expression to evaluate it first
>>   if (i&  j == k) {
>>         ^
>>       (    )
>> 
>> t.cpp:14:9: warning: using the result of an assignment as a condition
>> without
>>       parentheses [-Wparentheses]
>>   if (i = f()) {
>>       ~~^~~~~
>>       (      )
>> t.cpp:14:9: note: use '==' to turn this assignment into an equality
>> comparison
>>   if (i = f()) {
>>         ^
>>         ==
> 
> I'm a bit confused about fix-its in general. I thought normally clang 
> would continue translation as if the fix-it were actually changed, but 
> in this case this is just a warning and so this would represent a 
> semantic change on a file as its parsed.
> 
> Am I wrong?

fixits on errors suggest a solution to the problem and should coincide with recovery.

fixits on warnings should just suppress the warning;  they should implicitly coincide with recovery.

fixits on notes suggest alternative solutions.  There needn't be a primary solution.  These do not need to have any correlation with recovery.

John.



More information about the cfe-commits mailing list