Home | History | Annotate | Download | only in namespace.qual
      1 // RUN: %clang_cc1 -fsyntax-only -verify %s
      2 
      3 namespace A {
      4   struct x {}; // expected-note {{candidate found by name lookup is 'A::x'}}
      5   int x; // expected-note {{candidate found by name lookup is 'A::x'}}
      6 
      7   struct y {}; // expected-note {{type declaration hidden}}
      8 
      9   struct z;
     10   void z(float);
     11 }
     12 
     13 namespace B {
     14   struct x {}; // expected-note {{candidate found by name lookup is 'B::x'}}
     15   float x; // expected-note {{candidate found by name lookup is 'B::x'}}
     16 
     17   float y; // expected-note {{declaration hides type}}
     18 
     19   void z(int);
     20 }
     21 
     22 namespace AB {
     23   using namespace A;
     24   using namespace B;
     25 }
     26 
     27 void test() {
     28   struct AB::x foo; // expected-error {{reference to 'x' is ambiguous}}
     29   int i = AB::x; // expected-error {{reference to 'x' is ambiguous}}
     30 
     31   struct AB::y bar;
     32   float f = AB::y; // expected-error {{a type named 'y' is hidden by a declaration in a different namespace}}
     33   AB::z(i);
     34   AB::z(f);
     35 }
     36