| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- // RUN: %clang_cc1 -verify -fsyntax-only -fblocks -Wshadow %s
- int i; // expected-note 3 {{previous declaration is here}}
- void foo() {
- int pass1;
- int i; // expected-warning {{declaration shadows a variable in the global scope}} \
- // expected-note {{previous declaration is here}}
- {
- int pass2;
- int i; // expected-warning {{declaration shadows a local variable}} \
- // expected-note {{previous declaration is here}}
- {
- int pass3;
- int i; // expected-warning {{declaration shadows a local variable}}
- }
- }
- 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}}
- }
- // Don't warn about shadowing for function declarations.
- void test5(int i);
- void test6(void (*f)(int i)) {}
- void test7(void *context, void (*callback)(void *context)) {}
- extern int bob; // expected-note {{previous declaration is here}}
- // rdar://8883302
- void rdar8883302() {
- extern int bob; // don't warn for shadowing.
- }
- void test8() {
- int bob; // expected-warning {{declaration shadows a variable in the global scope}}
- }
|