Thanks, this is useful :-) On Wed, Aug 29, 2012 at 10:17 AM, Fariborz Jahanian <[email protected]>wrote:
> Author: fjahanian > Date: Wed Aug 29 12:17:11 2012 > New Revision: 162846 > > URL: http://llvm.org/viewvc/llvm-project?rev=162846&view=rev > Log: > objective-C: make -Widiomatic-parentheses work > when assignment expression in conditional invloves > property reference. // rdar://11066598 > > Modified: > cfe/trunk/lib/Sema/SemaExpr.cpp > cfe/trunk/test/SemaObjC/idiomatic-parentheses.m > > Modified: cfe/trunk/lib/Sema/SemaExpr.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExpr.cpp?rev=162846&r1=162845&r2=162846&view=diff > > ============================================================================== > --- cfe/trunk/lib/Sema/SemaExpr.cpp (original) > +++ cfe/trunk/lib/Sema/SemaExpr.cpp Wed Aug 29 12:17:11 2012 > @@ -11191,7 +11191,9 @@ > > IsOrAssign = Op->getOperator() == OO_PipeEqual; > Loc = Op->getOperatorLoc(); > - } else { > + } else if (PseudoObjectExpr *POE = dyn_cast<PseudoObjectExpr>(E)) > + return DiagnoseAssignmentAsCondition(POE->getSyntacticForm()); > + else { > // Not an assignment. > return; > } > > Modified: cfe/trunk/test/SemaObjC/idiomatic-parentheses.m > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjC/idiomatic-parentheses.m?rev=162846&r1=162845&r2=162846&view=diff > > ============================================================================== > --- cfe/trunk/test/SemaObjC/idiomatic-parentheses.m (original) > +++ cfe/trunk/test/SemaObjC/idiomatic-parentheses.m Wed Aug 29 12:17:11 > 2012 > @@ -4,13 +4,18 @@ > // <rdar://problem/7382435> > > @interface Object > +{ > + unsigned uid; > +} > - (id) init; > - (id) initWithInt: (int) i; > - (void) iterate: (id) coll; > - (id) nextObject; > +@property unsigned uid; > @end > > @implementation Object > +@synthesize uid; > - (id) init { > if (self = [self init]) { > } > @@ -20,6 +25,12 @@ > - (id) initWithInt: (int) i { > if (self = [self initWithInt: i]) { > } > + // rdar://11066598 > + if (self.uid = 100) { // expected-warning {{using the result of an > assignment as a condition without parentheses}} \ > + // expected-note {{place parentheses around the > assignment to silence this warning}} \ > + // expected-note {{use '==' to turn this > assignment into an equality comparison}} > + // ... > + } > return self; > } > > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
