[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

Douglas Gregor dgregor at apple.com
Thu Jan 7 16:42:51 PST 2010


On Jan 7, 2010, at 4:37 PM, John McCall wrote:

>
> 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.

Well-said. I'm writing up a little fix-it manifesto to describe this  
in more detail.

	- Doug



More information about the cfe-commits mailing list