summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/test/SemaCXX/ns_returns_retained_block_return.cpp17
-rw-r--r--clang/test/SemaObjC/ns_returns_retained_block_return.m4
2 files changed, 21 insertions, 0 deletions
diff --git a/clang/test/SemaCXX/ns_returns_retained_block_return.cpp b/clang/test/SemaCXX/ns_returns_retained_block_return.cpp
new file mode 100644
index 00000000000..9d04536e0f1
--- /dev/null
+++ b/clang/test/SemaCXX/ns_returns_retained_block_return.cpp
@@ -0,0 +1,17 @@
+// RUN: %clang_cc1 -fblocks -fsyntax-only -verify %s
+// RUN: %clang_cc1 -fblocks -fobjc-arc -fsyntax-only -verify %s
+// expected-no-diagnostics
+// rdar://17259812
+
+typedef void (^BT) ();
+
+class S {
+ BT br() __attribute__((ns_returns_retained)) {
+ return ^{};
+ }
+ BT br1() __attribute__((ns_returns_retained));
+};
+
+BT S::br1() {
+ return ^{};
+}
diff --git a/clang/test/SemaObjC/ns_returns_retained_block_return.m b/clang/test/SemaObjC/ns_returns_retained_block_return.m
index b7ce429ffb0..e5a96ca8af1 100644
--- a/clang/test/SemaObjC/ns_returns_retained_block_return.m
+++ b/clang/test/SemaObjC/ns_returns_retained_block_return.m
@@ -11,8 +11,12 @@ BT foo() __attribute__((ns_returns_retained));
@interface I
BT foo() __attribute__((ns_returns_retained));
+- (BT) Meth __attribute__((ns_returns_retained));
++ (BT) ClsMeth __attribute__((ns_returns_retained));
@end
@implementation I
BT foo() __attribute__((ns_returns_retained)) {return ^{}; }
+- (BT) Meth {return ^{}; }
++ (BT) ClsMeth {return ^{}; }
@end
OpenPOWER on IntegriCloud