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