1ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// RUN: %clang_cc1 -fsyntax-only -verify %s 2ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 3ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaonamespace A { 4ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao int VA; 5ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao void FA() {} 6ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao struct SA { int V; }; 7ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao} 8ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 9ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaousing A::VA; 10ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaousing A::FA; 11ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaousing typename A::SA; 12ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 13ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaoint main() 14ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao{ 15ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao VA = 1; 16ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao FA(); 17ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao SA x; //Still needs handling. 18ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao} 19ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 20ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostruct B { 21ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao void f(char){}; 22ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao void g(char){}; 23ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao}; 24ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostruct D : B { 25ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao using B::f; 26ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao void f(int); 27ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao void g(int); 28ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao}; 29ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaovoid D::f(int) { f('c'); } // calls B::f(char) 30ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaovoid D::g(int) { g('c'); } // recursively calls D::g(int) 31ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 32ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaonamespace E { 33ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao template <typename TYPE> int funcE(TYPE arg) { return(arg); } 34ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao} 35ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 36ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaousing E::funcE<int>; // expected-error{{using declaration can not refer to a template specialization}} 37ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 38ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaonamespace F { 39ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao struct X; 40ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao} 41ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 42ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaousing F::X; 43ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// Should have some errors here. Waiting for implementation. 44ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaovoid X(int); 45ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostruct X *x; 46