summaryrefslogtreecommitdiffstats
path: root/test/SemaObjC/arc-peformselector.m
diff options
context:
space:
mode:
authorAlex Lorenz <arphaman@gmail.com>2017-03-16 16:36:11 +0000
committerAlex Lorenz <arphaman@gmail.com>2017-03-16 16:36:11 +0000
commit1f2e6da2e3c7cc2f7e8997082d3053c3e8f7599d (patch)
tree7e427952f51f77227911e95d111b8cb721f3240a /test/SemaObjC/arc-peformselector.m
parentc08458fa5962d454782262c840818281b1e38a3a (diff)
[ObjC][Sema] Avoid ARC performSelector error for 'self' selector
The instance method 'self' does not actually return an over-retained object, so we shouldn't report an error when it's used with 'performSelector'. rdar://31071620 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@297961 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/SemaObjC/arc-peformselector.m')
-rw-r--r--test/SemaObjC/arc-peformselector.m3
1 files changed, 3 insertions, 0 deletions
diff --git a/test/SemaObjC/arc-peformselector.m b/test/SemaObjC/arc-peformselector.m
index 80fd6d8884..e90ac6b1c8 100644
--- a/test/SemaObjC/arc-peformselector.m
+++ b/test/SemaObjC/arc-peformselector.m
@@ -8,6 +8,7 @@
- (id) init __attribute__((ns_returns_not_retained));
- (id)PlusZero;
- (id)PlusOne __attribute__((ns_returns_retained)); // expected-note {{method 'PlusOne' declared here}}
+- (id)self;
@end
@interface I : NSObject
@@ -31,6 +32,8 @@
return [self performSelector : @selector(PlusZero)];
return [self performSelector : @selector(PlusOne)]; // expected-error {{performSelector names a selector which retains the object}}
+
+ return [self performSelector: @selector(self)]; // No error, -self is not +1!
}
- (id)performSelector:(SEL)aSelector { return 0; }