1// RUN: %clang_cc1 -fsyntax-only -verify %s
2
3namespace 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
13namespace 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
22namespace AB {
23  using namespace A;
24  using namespace B;
25}
26
27void 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