xref: /llvm-project/clang/test/Parser/cxx-using-declaration.cpp (revision 14d9d2fb78ac8b3b76853cb0fb9dbe2188295696)
1 // FIXME: Disabled, appears to have undefined behavior, and needs to be updated to match new warnings.
2 // RUN: true
3 
4 // RUNX: clang-cc -fsyntax-only -verify %s
5 
6 namespace A {
7     int VA;
8     void FA() {}
9     struct SA { int V; };
10 }
11 
12 using A::VA;
13 using A::FA;
14 using typename A::SA;
15 
16 void main()
17 {
18     VA = 1;
19     FA();
20     SA x;   //Still needs handling.
21 }
22 
23 struct B {
24     void f(char){};
25     void g(char){};
26 };
27 struct D : B {
28     using B::f;
29     void f(int);
30     void g(int);
31 };
32 void D::f(int) { f('c'); } // calls B::f(char)
33 void D::g(int) { g('c'); } // recursively calls D::g(int)
34 
35 namespace E {
36     template <typename TYPE> int funcE(TYPE arg) { return(arg); }
37 }
38 
39 using E::funcE<int>; // expected-error{{use of template specialization in using directive not allowed}}
40 
41 namespace F {
42     struct X;
43 }
44 
45 using F::X;
46 // Should have some errors here.  Waiting for implementation.
47 void X(int);
48 struct X *x;
49