qualified-id-lookup.cpp revision 83cf05a3b0e655dc8ea1cb4c4e1eef541b770992
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); 53a67865c64e2185817703b602ec24163b286abaabChris Lattner int v3 = ::i1; 5444b4321feab46299d3f5cfd404680884752a0fcfDouglas Gregor} 55a67865c64e2185817703b602ec24163b286abaabChris Lattner 5683cf05a3b0e655dc8ea1cb4c4e1eef541b770992Chris Lattnertypedef int f2_type; 5783cf05a3b0e655dc8ea1cb4c4e1eef541b770992Chris Lattnernamespace a { 5883cf05a3b0e655dc8ea1cb4c4e1eef541b770992Chris Lattner typedef int f2_type(int, int); 5983cf05a3b0e655dc8ea1cb4c4e1eef541b770992Chris Lattner 6083cf05a3b0e655dc8ea1cb4c4e1eef541b770992Chris Lattner void test_f2() { 6183cf05a3b0e655dc8ea1cb4c4e1eef541b770992Chris Lattner ::f2_type(1, 2); // expected-error {{function-style cast to a builtin type can only take one argument}} 6283cf05a3b0e655dc8ea1cb4c4e1eef541b770992Chris Lattner } 6383cf05a3b0e655dc8ea1cb4c4e1eef541b770992Chris Lattner} 6483cf05a3b0e655dc8ea1cb4c4e1eef541b770992Chris Lattner 6583cf05a3b0e655dc8ea1cb4c4e1eef541b770992Chris Lattner 6683cf05a3b0e655dc8ea1cb4c4e1eef541b770992Chris Lattner 67