1ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// RUN: %clang_cc1 -fsyntax-only -verify %s
2ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
3ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaonamespace Ints {
4ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  int zero = 0; // expected-note {{candidate found by name lookup is 'Ints::zero'}}
5ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  void f(int); // expected-note 3 {{candidate function}}
6ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  void g(int);
7ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao}
8ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
9ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaonamespace Floats {
10ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  float zero = 0.0f; // expected-note {{candidate found by name lookup is 'Floats::zero'}}
11ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  void f(float); // expected-note 3 {{candidate function}}
12ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  void g(float);
13ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao}
14ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
15ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaonamespace Numbers {
16ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  using namespace Ints;
17ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  using namespace Floats;
18ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao}
19ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
20ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaovoid test() {
21ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  int i = Ints::zero;
22ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  Ints::f(i);
23ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
24ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  float f = Floats::zero;
25ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  Floats::f(f);
26ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
27ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  double n = Numbers::zero; // expected-error {{reference to 'zero' is ambiguous}}
28ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  Numbers::f(n); // expected-error{{call to 'f' is ambiguous}}
29ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  Numbers::f(i);
30ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  Numbers::f(f);
31ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao}
32ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
33ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaonamespace Numbers {
34ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  struct Number {	// expected-note 2 {{candidate}}
35ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao    explicit Number(double d) : d(d) {}
36ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao    double d;
37ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  };
38ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  Number zero(0.0f);
39ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  void g(Number); // expected-note 2{{passing argument to parameter here}}
40ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao}
41ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
42ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaovoid test2() {
43ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  Numbers::Number n = Numbers::zero;
44ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  Numbers::f(n); // expected-error {{no matching function for call to 'f'}}
45ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  Numbers::g(n);
46ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao}
47ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
48ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaonamespace Numbers2 {
49ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  using Numbers::f;
50ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  using Numbers::g;
51ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao}
52ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
53ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaovoid test3() {
54ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  Numbers::Number n = Numbers::zero;
55ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  Numbers2::f(n); // expected-error {{no matching function for call to 'f'}}
56ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  Numbers2::g(n);
57ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
58ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  int i = Ints::zero;
59ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  Numbers2::f(i);
60ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  Numbers2::g(i); // expected-error {{no viable conversion from 'int' to 'Numbers::Number'}}
61ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
62ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  float f = Floats::zero;
63ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  Numbers2::f(f);
64ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  Numbers2::g(f); // expected-error {{no viable conversion from 'float' to 'Numbers::Number'}}
65ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao}
66651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
67651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesnamespace inline_ns {
68651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  int x; // expected-note 2{{found}}
69651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  inline namespace A { // expected-warning {{C++11}}
70651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines    int x; // expected-note 2{{found}}
71651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines    int y; // expected-note 2{{found}}
72651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  }
73651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  int y; // expected-note 2{{found}}
74651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  int k1 = x + y; // expected-error 2{{ambiguous}}
75651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  int k2 = inline_ns::x + inline_ns::y; // expected-error 2{{ambiguous}}
76651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
77