1*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -verify %s 2*67e74705SXin Li 3*67e74705SXin Li namespace A { 4*67e74705SXin Li int VA; FA()5*67e74705SXin Li void FA() {} 6*67e74705SXin Li struct SA { int V; }; 7*67e74705SXin Li } 8*67e74705SXin Li 9*67e74705SXin Li using A::VA; 10*67e74705SXin Li using A::FA; 11*67e74705SXin Li using typename A::SA; 12*67e74705SXin Li main()13*67e74705SXin Liint main() 14*67e74705SXin Li { 15*67e74705SXin Li VA = 1; 16*67e74705SXin Li FA(); 17*67e74705SXin Li SA x; //Still needs handling. 18*67e74705SXin Li } 19*67e74705SXin Li 20*67e74705SXin Li struct B { fB21*67e74705SXin Li void f(char){}; gB22*67e74705SXin Li void g(char){}; 23*67e74705SXin Li }; 24*67e74705SXin Li struct D : B { 25*67e74705SXin Li using B::f; 26*67e74705SXin Li void f(int); 27*67e74705SXin Li void g(int); 28*67e74705SXin Li }; f(int)29*67e74705SXin Livoid D::f(int) { f('c'); } // calls B::f(char) g(int)30*67e74705SXin Livoid D::g(int) { g('c'); } // recursively calls D::g(int) 31*67e74705SXin Li 32*67e74705SXin Li namespace E { funcE(TYPE arg)33*67e74705SXin Li template <typename TYPE> int funcE(TYPE arg) { return(arg); } 34*67e74705SXin Li } 35*67e74705SXin Li 36*67e74705SXin Li using E::funcE<int>; // expected-error{{using declaration cannot refer to a template specialization}} 37*67e74705SXin Li 38*67e74705SXin Li namespace F { 39*67e74705SXin Li struct X; 40*67e74705SXin Li } 41*67e74705SXin Li 42*67e74705SXin Li using F::X; 43*67e74705SXin Li // Should have some errors here. Waiting for implementation. 44*67e74705SXin Li void X(int); 45*67e74705SXin Li struct X *x; 46*67e74705SXin Li 47*67e74705SXin Li 48*67e74705SXin Li namespace ShadowedTagNotes { 49*67e74705SXin Li 50*67e74705SXin Li namespace foo { 51*67e74705SXin Li class Bar {}; 52*67e74705SXin Li } 53*67e74705SXin Li 54*67e74705SXin Li void Bar(int); // expected-note{{class 'Bar' is hidden by a non-type declaration of 'Bar' here}} 55*67e74705SXin Li using foo::Bar; 56*67e74705SXin Li ambiguity()57*67e74705SXin Livoid ambiguity() { 58*67e74705SXin Li const Bar *x; // expected-error{{must use 'class' tag to refer to type 'Bar' in this scope}} 59*67e74705SXin Li } 60*67e74705SXin Li 61*67e74705SXin Li } // namespace ShadowedTagNotes 62