aboutsummaryrefslogtreecommitdiff
path: root/test/ARCMT
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2013-01-04 18:30:08 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2013-01-04 18:30:08 +0000
commitea2224d7078c4d31ad32adbaba4bdc2d85a3d609 (patch)
treeb5e3be08d7fbef2ec0fb2998fdf1e214edf6282d /test/ARCMT
parent81cc2f1ecd31d8e3bca2c936fb9538a9d9c39695 (diff)
[arcmt] Adds brackets in case statements that "contain" initialization of retaining
variable, thus emitting the "switch case is in protected scope" error. rdar://12952016 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171484 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/ARCMT')
-rw-r--r--test/ARCMT/checking.m9
-rw-r--r--test/ARCMT/protected-scope.m36
-rw-r--r--test/ARCMT/protected-scope.m.result38
3 files changed, 78 insertions, 5 deletions
diff --git a/test/ARCMT/checking.m b/test/ARCMT/checking.m
index 3ad911e10a..b0d3243254 100644
--- a/test/ARCMT/checking.m
+++ b/test/ARCMT/checking.m
@@ -178,13 +178,12 @@ void test12(id collection) {
}
void test6(unsigned cond) {
- // FIXME: Fix this automatically ?
switch (cond) {
case 0:
;
- id x; // expected-note {{jump bypasses initialization of retaining variable}}
+ id x;
- case 1: // expected-error {{switch case is in protected scope}}
+ case 1:
break;
}
}
@@ -293,10 +292,10 @@ id test9(Test9 *v) {
void rdar9491791(int p) {
switch (p) {
case 3:;
- NSObject *o = [[NSObject alloc] init]; // expected-note {{jump bypasses initialization of retaining variable}}
+ NSObject *o = [[NSObject alloc] init];
[o release];
break;
- default: // expected-error {{switch case is in protected scope}}
+ default:
break;
}
}
diff --git a/test/ARCMT/protected-scope.m b/test/ARCMT/protected-scope.m
new file mode 100644
index 0000000000..b33382ed50
--- /dev/null
+++ b/test/ARCMT/protected-scope.m
@@ -0,0 +1,36 @@
+// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result
+// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t
+// RUN: diff %t %s.result
+// DISABLE: mingw32
+
+#include "Common.h"
+
+void test(id p, int x) {
+ int v;
+ switch(x) {
+ case 0:
+ v++;
+ id w1 = p;
+ id w2 = p;
+ break;
+ case 1:
+ v++;
+ id w3 = p;
+ break;
+ case 2:
+ break;
+ default:
+ break;
+ }
+}
+
+void test2(int p) {
+ switch (p) {
+ case 3:;
+ NSObject *o = [[NSObject alloc] init];
+ [o release];
+ break;
+ default:
+ break;
+ }
+}
diff --git a/test/ARCMT/protected-scope.m.result b/test/ARCMT/protected-scope.m.result
new file mode 100644
index 0000000000..42d58b8221
--- /dev/null
+++ b/test/ARCMT/protected-scope.m.result
@@ -0,0 +1,38 @@
+// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result
+// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t
+// RUN: diff %t %s.result
+// DISABLE: mingw32
+
+#include "Common.h"
+
+void test(id p, int x) {
+ int v;
+ switch(x) {
+ case 0: {
+ v++;
+ id w1 = p;
+ id w2 = p;
+ break;
+ }
+ case 1: {
+ v++;
+ id w3 = p;
+ break;
+ }
+ case 2:
+ break;
+ default:
+ break;
+ }
+}
+
+void test2(int p) {
+ switch (p) {
+ case 3: {;
+ NSObject *o = [[NSObject alloc] init];
+ break;
+ }
+ default:
+ break;
+ }
+}