r229919 - [Objective-C Sema]. Don't warn about use of
Fariborz Jahanian
fjahanian at apple.com
Thu Feb 19 13:52:41 PST 2015
Author: fjahanian
Date: Thu Feb 19 15:52:41 2015
New Revision: 229919
URL: http://llvm.org/viewvc/llvm-project?rev=229919&view=rev
Log:
[Objective-C Sema]. Don't warn about use of
property accessors in @selector not implemented
because they will be auto-synthesized. rdar://16607480
Modified:
cfe/trunk/lib/Sema/SemaDeclObjC.cpp
cfe/trunk/test/SemaObjC/selector-3.m
Modified: cfe/trunk/lib/Sema/SemaDeclObjC.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclObjC.cpp?rev=229919&r1=229918&r2=229919&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaDeclObjC.cpp (original)
+++ cfe/trunk/lib/Sema/SemaDeclObjC.cpp Thu Feb 19 15:52:41 2015
@@ -2441,12 +2441,16 @@ ObjCMethodDecl *Sema::LookupImplementedM
GlobalMethods &Methods = Pos->second;
for (const ObjCMethodList *Method = &Methods.first; Method;
Method = Method->getNext())
- if (Method->getMethod() && Method->getMethod()->isDefined())
+ if (Method->getMethod() &&
+ (Method->getMethod()->isDefined() ||
+ Method->getMethod()->isPropertyAccessor()))
return Method->getMethod();
for (const ObjCMethodList *Method = &Methods.second; Method;
Method = Method->getNext())
- if (Method->getMethod() && Method->getMethod()->isDefined())
+ if (Method->getMethod() &&
+ (Method->getMethod()->isDefined() ||
+ Method->getMethod()->isPropertyAccessor()))
return Method->getMethod();
return nullptr;
}
Modified: cfe/trunk/test/SemaObjC/selector-3.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjC/selector-3.m?rev=229919&r1=229918&r2=229919&view=diff
==============================================================================
--- cfe/trunk/test/SemaObjC/selector-3.m (original)
+++ cfe/trunk/test/SemaObjC/selector-3.m Thu Feb 19 15:52:41 2015
@@ -134,3 +134,24 @@ void test16428638() {
SEL s = @selector(compare:);
(void)s;
}
+
+// rdar://16607480
+ at class NSString;
+ at interface SELCanary : NSObject
+ at property (readonly, nonatomic) NSString *name;
+ at property (nonatomic, getter = isHidden) char hidden;
+ at property (nonatomic, copy, getter = hasFish, setter = setFish:) NSString *ridiculousFish;
+ at end
+
+ at implementation SELCanary
+- (void) Meth {
+ SEL properties[] = {
+ @selector(name),
+ @selector(isHidden),
+ @selector(setHidden:),
+ @selector(hasFish),
+ @selector(setFish:)
+ };
+}
+ at end
+
More information about the cfe-commits
mailing list