[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