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