diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2013-01-04 18:30:08 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2013-01-04 18:30:08 +0000 |
commit | ea2224d7078c4d31ad32adbaba4bdc2d85a3d609 (patch) | |
tree | b5e3be08d7fbef2ec0fb2998fdf1e214edf6282d /test/ARCMT | |
parent | 81cc2f1ecd31d8e3bca2c936fb9538a9d9c39695 (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.m | 9 | ||||
-rw-r--r-- | test/ARCMT/protected-scope.m | 36 | ||||
-rw-r--r-- | test/ARCMT/protected-scope.m.result | 38 |
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; + } +} |