]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/testsuite/gdc.test/runnable/externmangle2.d
Add D front-end, libphobos library, and D2 testsuite.
[thirdparty/gcc.git] / gcc / testsuite / gdc.test / runnable / externmangle2.d
1 // EXTRA_CPP_SOURCES: extra-files/externmangle2.cpp
2
3 version(Windows)
4 {
5 void main()
6 {
7 }
8 }
9 else
10 {
11 extern(C++):
12
13 struct Test32NS1
14 {
15 struct Foo(X)
16 {
17 X *v;
18 }
19
20
21 struct Bar(X)
22 {
23 X *v;
24 }
25
26 };
27
28 struct Test32NS2
29 {
30 struct Foo(X)
31 {
32 X *v;
33 }
34 };
35
36 struct Test32(alias Y, alias Z)
37 {
38 Y!(int)* field;
39 };
40
41
42 void test32a(Test32!(Test32NS1.Foo, Test32NS1.Foo) arg);
43 void test32b(Test32!(Test32NS1.Foo, Test32NS1.Bar) arg);
44 void test32c(Test32!(Test32NS1.Foo, Test32NS2.Foo) arg);
45 void test32d(Test32!(Test32NS1.Foo, Test32NS2.Foo) arg1, Test32!(Test32NS2.Foo, Test32NS1.Foo) arg2);
46
47 interface XXX
48 {
49 }
50
51 void test33a(XXX, XXX*);
52
53
54 struct Test33(alias A, alias B)
55 {
56 }
57
58 /*
59 void test33(XXX, Test33!(test33a, test33a) arg, XXX);
60
61
62 struct Test34(alias A)
63 {
64 };
65
66 struct Test34A
67 {
68 static void foo(int);
69 };
70
71
72 void test34(Test34!(Test34A.foo) arg);
73 */
74
75 __gshared extern int test36;
76
77 /*
78 struct Test37(alias A)
79 {
80 };
81
82 struct Test37A
83 {
84 __gshared extern int t38;
85 };
86
87 void test37(Test37!(test36) arg);
88 void test38(Test37!(Test37A.t38) arg);
89 */
90
91 struct Test39
92 {
93 struct T39A(X)
94 {
95 }
96 }
97
98 struct T39A
99 {
100 }
101
102 void test39(Test39.T39A!(.T39A));
103
104 version(none)
105 {
106 version(Posix) //Only for g++ with -std=c++0x and Visual Studio 2013+
107 {
108
109 struct Test40(T, V...)
110 {
111
112 }
113
114 void test40(Test40!(int, double, void))
115 {
116 }
117 }
118 else version(Win64) //Only for g++ with -std=c++0x and Visual Studio 2013+
119 {
120
121 struct Test40(T, V...)
122 {
123
124 }
125
126 void test40(Test40!(int, double, void))
127 {
128 }
129 }
130 }
131
132
133 __gshared extern const XXX test41;
134 struct Test42
135 {
136 __gshared extern const XXX test42;
137 }
138 __gshared extern int[4] test43;
139 const(XXX) test44();
140
141 void main()
142 {
143 test32a(Test32!(Test32NS1.Foo, Test32NS1.Foo)());
144 test32b(Test32!(Test32NS1.Foo, Test32NS1.Bar)());
145 test32c(Test32!(Test32NS1.Foo, Test32NS2.Foo)());
146 test32d(Test32!(Test32NS1.Foo, Test32NS2.Foo)(), Test32!(Test32NS2.Foo, Test32NS1.Foo)());
147
148 //test33a(null, null);
149 //test33(null, Test33!(test33a, test33a)(), null);
150
151 //test34(Test34!(Test34A.foo)());
152
153 assert(test36 == 36);
154
155 //test37(Test37!(test36)());
156 //test38(Test37!(Test37A.t38)());
157 test39(Test39.T39A!(.T39A)());
158
159 assert(test41 is null);
160 assert(Test42.test42 is null);
161 assert(test43 == [1, 2, 3, 4]);
162 auto ptr = &test44;
163 }
164 }