qualified-id-lookup.cpp revision 44b4321feab46299d3f5cfd404680884752a0fcf
144b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor// RUN: clang -fsyntax-only -verify %s 244b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor 344b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregornamespace Ns { 444b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor int f(); // expected-note{{previous declaration is here}} 544b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor} 644b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregornamespace Ns { 744b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor double f(); // expected-error{{functions that differ only in their return type cannot be overloaded}} 844b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor} 944b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor 1044b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregornamespace Ns2 { 1144b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor float f(); 1244b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor} 1344b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor 1444b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregornamespace Ns2 { 1544b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor float f(int); // expected-note{{previous declaration is here}} 1644b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor} 1744b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor 1844b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregornamespace Ns2 { 1944b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor double f(int); // expected-error{{functions that differ only in their return type cannot be overloaded}} 2044b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor} 2144b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor 2244b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregornamespace N { 2344b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor int& f1(); 2444b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor} 2544b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor 2644b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregornamespace N { 2744b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor struct f1 { 2844b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor static int member; 2944b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor }; 3044b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor 3144b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor void test_f1() { 3244b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor int &i1 = f1(); 3344b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor } 3444b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor} 3544b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor 3644b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregornamespace N { 3744b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor float& f1(int); 3844b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor 3944b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor struct f2 { 4044b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor static int member; 4144b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor }; 4244b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor void f2(); 4344b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor} 4444b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor 4544b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregorint i1 = N::f1::member; 4644b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregortypedef struct N::f1 type1; 4744b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregorint i2 = N::f2::member; 4844b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregortypedef struct N::f2 type2; 4944b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor 5044b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregorvoid test_f1(int i) { 5144b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor int &v1 = N::f1(); 5244b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor float &v2 = N::f1(i); 5344b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor} 54