diff options
Diffstat (limited to 'clang/test/Sema/warn-shadow.c')
-rw-r--r-- | clang/test/Sema/warn-shadow.c | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/clang/test/Sema/warn-shadow.c b/clang/test/Sema/warn-shadow.c index dacf66d5920..c9a783b437a 100644 --- a/clang/test/Sema/warn-shadow.c +++ b/clang/test/Sema/warn-shadow.c @@ -1,6 +1,6 @@ -// RUN: %clang_cc1 -verify -fsyntax-only -Wshadow %s +// RUN: %clang_cc1 -verify -fsyntax-only -fblocks -Wshadow %s -int i; // expected-note {{previous declaration is here}} +int i; // expected-note 3 {{previous declaration is here}} void foo() { int pass1; @@ -18,3 +18,28 @@ void foo() { int sin; // okay; 'sin' has not been declared, even though it's a builtin. } + +// <rdar://problem/7677531> +void (^test1)(int) = ^(int i) { // expected-warning {{declaration shadows a variable in the global scope}} \ + // expected-note{{previous declaration is here}} + { + int i; // expected-warning {{declaration shadows a local variable}} \ + // expected-note{{previous declaration is here}} + + (^(int i) { return i; })(i); //expected-warning {{declaration shadows a local variable}} + } +}; + + +struct test2 { + int i; +}; + +void test3(void) { + struct test4 { + int i; + }; +} + +void test4(int i) { // expected-warning {{declaration shadows a variable in the global scope}} +} |