diff options
-rw-r--r-- | lib/Sema/SemaExprObjC.cpp | 4 | ||||
-rw-r--r-- | test/SemaObjC/property-user-setter.m | 26 |
2 files changed, 22 insertions, 8 deletions
diff --git a/lib/Sema/SemaExprObjC.cpp b/lib/Sema/SemaExprObjC.cpp index 9ce0fafe3c..c1f7aae0a2 100644 --- a/lib/Sema/SemaExprObjC.cpp +++ b/lib/Sema/SemaExprObjC.cpp @@ -1483,10 +1483,6 @@ HandleExprPropertyRefExpr(const ObjCObjectPointerType *OPT, SelectorTable::constructSetterName(PP.getIdentifierTable(), PP.getSelectorTable(), Member); ObjCMethodDecl *Setter = IFace->lookupInstanceMethod(SetterSel); - if (Setter && Setter->isSynthesized()) - // Check for corner case of: @property int p; ... self.P = 0; - // setter name is synthesized "setP" but there is no property name 'P'. - Setter = 0; // May be founf in property's qualified list. if (!Setter) diff --git a/test/SemaObjC/property-user-setter.m b/test/SemaObjC/property-user-setter.m index b36b027e5e..9ebad6048d 100644 --- a/test/SemaObjC/property-user-setter.m +++ b/test/SemaObjC/property-user-setter.m @@ -124,15 +124,33 @@ int main (void) { @synthesize t, T; @synthesize Pxyz, pxyz; - (id) Meth { - self.P = 0; // expected-error {{property 'P' not found on object of type 'rdar11363363 *'}} - self.q = 0; // expected-error {{property 'q' not found on object of type 'rdar11363363 *'}} + self.P = 0; + self.q = 0; // rdar://11528439 self.t = 0; // expected-error {{synthesized properties 't' and 'T' both claim setter 'setT:'}} self.T = 0; // expected-error {{synthesized properties 'T' and 't' both claim setter 'setT:'}} self.Pxyz = 0; // expected-error {{synthesized properties 'Pxyz' and 'pxyz' both claim setter 'setPxyz:'}} self.pxyz = 0; // expected-error {{synthesized properties 'pxyz' and 'Pxyz' both claim setter 'setPxyz:'}} - self.R = 0; // expected-error {{property 'R' not found on object of type 'rdar11363363 *'; did you mean to access ivar 'R'?}} - return self.R; // expected-error {{property 'R' not found on object of type 'rdar11363363 *'; did you mean to access ivar 'R'?}} + self.R = 0; + return self.R; // expected-error {{expected getter method not found on object of type 'rdar11363363 *'}} +} +@end + +// rdar://11499742 +@class BridgeFormatter; + +@interface FMXBridgeFormatter + +@property(assign, readwrite, getter=formatter, setter=setFormatter:) BridgeFormatter* cppFormatter; + +@end + +@implementation FMXBridgeFormatter +@synthesize cppFormatter; + +- (void) dealloc +{ + self.formatter = 0; } @end |