aboutsummaryrefslogtreecommitdiff
path: root/clang/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
commit03fbe3ef81e75bcbc8a54a301bd617faee93b40b (patch)
treeb69132332cd0083b5c78de395ceacf16c856b122 /clang/test/ARCMT
parentaa1ce901ebfbc1bfa58705f2660a8693f9c21296 (diff)
downloadllvm-03fbe3ef81e75bcbc8a54a301bd617faee93b40b.zip
llvm-03fbe3ef81e75bcbc8a54a301bd617faee93b40b.tar.gz
llvm-03fbe3ef81e75bcbc8a54a301bd617faee93b40b.tar.bz2
[arcmt] Adds brackets in case statements that "contain" initialization of retaining
variable, thus emitting the "switch case is in protected scope" error. rdar://12952016 llvm-svn: 171484
Diffstat (limited to 'clang/test/ARCMT')
-rw-r--r--clang/test/ARCMT/checking.m9
-rw-r--r--clang/test/ARCMT/protected-scope.m36
-rw-r--r--clang/test/ARCMT/protected-scope.m.result38
3 files changed, 78 insertions, 5 deletions
diff --git a/clang/test/ARCMT/checking.m b/clang/test/ARCMT/checking.m
index 3ad911e..b0d3243 100644
--- a/clang/test/ARCMT/checking.m
+++ b/clang/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/clang/test/ARCMT/protected-scope.m b/clang/test/ARCMT/protected-scope.m
new file mode 100644
index 0000000..b33382e
--- /dev/null
+++ b/clang/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/clang/test/ARCMT/protected-scope.m.result b/clang/test/ARCMT/protected-scope.m.result
new file mode 100644
index 0000000..42d58b8
--- /dev/null
+++ b/clang/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;
+ }
+}