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 | |