[cfe-dev] [Clang 3.0] Inconsistent warnings about assignment in a condition

jahanian fjahanian at apple.com
Fri Mar 16 14:34:56 PDT 2012


On Mar 16, 2012, at 1:45 PM, John McCall wrote:

> On Mar 16, 2012, at 12:44 AM, Alexei Sholik wrote:
>> I can't find a way to make Clang _always_ trigger warnings about
>> assignment inside a condition. When I create a new project (Mac or
>> iOS) in Xcode 4.3.1 and compile it, the following code does not
>> trigger any warnings:
>> 
>> - (id)init
>> {
>>   if (self = [super init]) {
>>       // ...
>>   }
>>   return self;
>> }
> 
> We wanted to enable -Wparentheses by default, but we got a lot of pushback
> over this specific idiom (particularly since Apple puts out example code
> with this verbatim), so we moved it to a subgroup -Widiomatic-parentheses
> that is not enabled by default.  If you specifically enable -Wparentheses
> instead of relying on the default behavior, you should see warnings about
> this.
> 
>> BUT, in the same project I don't get any warnings in the following case:
>> 
>>       if (self.uid = 11) {
>>           // ...
>>       }
>> 
>> Is this behavior expected? Which flag should I use in order for the
>> compiler to catch this case too?
> 
> This is an oversight caused by a recent refactor;  please file a bug.

Do we issue a warning if self.uid is a c++object and '=' is overloaded?

- Fariborz

> 
> John.
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev




More information about the cfe-dev mailing list