xref: /minix3/external/bsd/llvm/dist/clang/test/Modules/Inputs/merge-using-decls/a.h (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
1*0a6a1f1dSLionel Sambuc struct X {
2*0a6a1f1dSLionel Sambuc   int v;
3*0a6a1f1dSLionel Sambuc   typedef int t;
4*0a6a1f1dSLionel Sambuc };
5*0a6a1f1dSLionel Sambuc 
6*0a6a1f1dSLionel Sambuc struct YA {
7*0a6a1f1dSLionel Sambuc   int value;
8*0a6a1f1dSLionel Sambuc   typedef int type;
9*0a6a1f1dSLionel Sambuc };
10*0a6a1f1dSLionel Sambuc 
11*0a6a1f1dSLionel Sambuc template<typename T> struct C : X, T {
12*0a6a1f1dSLionel Sambuc   using T::value;
13*0a6a1f1dSLionel Sambuc   using typename T::type;
14*0a6a1f1dSLionel Sambuc   using X::v;
15*0a6a1f1dSLionel Sambuc   using typename X::t;
16*0a6a1f1dSLionel Sambuc };
17*0a6a1f1dSLionel Sambuc 
18*0a6a1f1dSLionel Sambuc template<typename T> struct D : X, T {
19*0a6a1f1dSLionel Sambuc   using T::value;
20*0a6a1f1dSLionel Sambuc   using typename T::type;
21*0a6a1f1dSLionel Sambuc   using X::v;
22*0a6a1f1dSLionel Sambuc   using typename X::t;
23*0a6a1f1dSLionel Sambuc };
24*0a6a1f1dSLionel Sambuc 
25*0a6a1f1dSLionel Sambuc template<typename T> struct E : X, T {
26*0a6a1f1dSLionel Sambuc   using T::value;
27*0a6a1f1dSLionel Sambuc   using typename T::type;
28*0a6a1f1dSLionel Sambuc   using X::v;
29*0a6a1f1dSLionel Sambuc   using typename X::t;
30*0a6a1f1dSLionel Sambuc };
31*0a6a1f1dSLionel Sambuc 
32*0a6a1f1dSLionel Sambuc template<typename T> struct F : X, T {
33*0a6a1f1dSLionel Sambuc   using T::value;
34*0a6a1f1dSLionel Sambuc   using typename T::type;
35*0a6a1f1dSLionel Sambuc   using X::v;
36*0a6a1f1dSLionel Sambuc   using typename X::t;
37*0a6a1f1dSLionel Sambuc };
38*0a6a1f1dSLionel Sambuc 
39*0a6a1f1dSLionel Sambuc // Force instantiation.
40*0a6a1f1dSLionel Sambuc typedef C<YA>::type I;
41*0a6a1f1dSLionel Sambuc typedef D<YA>::type I;
42*0a6a1f1dSLionel Sambuc typedef E<YA>::type I;
43*0a6a1f1dSLionel Sambuc typedef F<YA>::type I;
44