| // RUN: %clang_cc1 -fsyntax-only -verify %s |
| |
| namespace A { |
| struct x {}; // expected-note {{candidate found by name lookup is 'A::x'}} |
| int x; // expected-note {{candidate found by name lookup is 'A::x'}} |
| |
| struct y {}; // expected-note {{type declaration hidden}} |
| |
| struct z; |
| void z(float); |
| } |
| |
| namespace B { |
| struct x {}; // expected-note {{candidate found by name lookup is 'B::x'}} |
| float x; // expected-note {{candidate found by name lookup is 'B::x'}} |
| |
| float y; // expected-note {{declaration hides type}} |
| |
| void z(int); |
| } |
| |
| namespace AB { |
| using namespace A; |
| using namespace B; |
| } |
| |
| void test() { |
| struct AB::x foo; // expected-error {{reference to 'x' is ambiguous}} |
| int i = AB::x; // expected-error {{reference to 'x' is ambiguous}} |
| |
| struct AB::y bar; |
| float f = AB::y; // expected-error {{a type named 'y' is hidden by a declaration in a different namespace}} |
| AB::z(i); |
| AB::z(f); |
| } |