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
test()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