1 // RUN: %clang_cc1 -verify -fsyntax-only -Wshadow %s 2 3 namespace { 4 int i; // expected-note {{previous declaration is here}} 5 } 6 7 namespace one { 8 namespace two { 9 int j; // expected-note {{previous declaration is here}} 10 } 11 } 12 13 namespace xx { 14 int m; 15 } 16 namespace yy { 17 int m; 18 } 19 20 using namespace one::two; 21 using namespace xx; 22 using namespace yy; 23 24 void foo() { 25 int i; // expected-warning {{declaration shadows a variable in namespace '<anonymous>'}} 26 int j; // expected-warning {{declaration shadows a variable in namespace 'one::two'}} 27 int m; 28 } 29 30 class A { 31 static int data; // expected-note {{previous declaration}} 32 int field; // expected-note {{previous declaration}} 33 34 void test() { 35 char *field; // expected-warning {{declaration shadows a field of 'A'}} 36 char *data; // expected-warning {{declaration shadows a static data member of 'A'}} 37 } 38 }; 39 40 // TODO: this should warn, <rdar://problem/5018057> 41 class B : A { 42 int data; 43 static int field; 44 }; 45 46 // rdar://8900456 47 namespace rdar8900456 { 48 struct Foo { 49 static void Baz(); 50 private: 51 int Bar; 52 }; 53 54 void Foo::Baz() { 55 double Bar = 12; // Don't warn. 56 } 57 } 58