d: Merge upstream dmd 568496d5b, druntime 178c44ff, phobos 574bf883b.
[official-gcc.git] / gcc / testsuite / gdc.test / compilable / dtoh_functions.d
blob1ee6ce62c48b38ec1ac6bd41d49f524e913633b8
1 /+
2 REQUIRED_ARGS: -HC -c -o-
3 PERMUTE_ARGS:
4 TEST_OUTPUT:
5 ---
6 // Automatically generated by Digital Mars D Compiler
8 #pragma once
10 #include <assert.h>
11 #include <stddef.h>
12 #include <stdint.h>
13 #include <math.h>
15 #ifdef CUSTOM_D_ARRAY_TYPE
16 #define _d_dynamicArray CUSTOM_D_ARRAY_TYPE
17 #else
18 /// Represents a D [] array
19 template<typename T>
20 struct _d_dynamicArray final
22 size_t length;
23 T *ptr;
25 _d_dynamicArray() : length(0), ptr(NULL) { }
27 _d_dynamicArray(size_t length_in, T *ptr_in)
28 : length(length_in), ptr(ptr_in) { }
30 T& operator[](const size_t idx) {
31 assert(idx < length);
32 return ptr[idx];
35 const T& operator[](const size_t idx) const {
36 assert(idx < length);
37 return ptr[idx];
40 #endif
42 struct S final
44 int32_t i;
45 int32_t get(int32_t , int32_t );
46 static int32_t get();
47 static const int32_t staticVar;
48 void useVars(int32_t pi = i, int32_t psv = staticVar);
49 struct Nested final
51 void useStaticVar(int32_t i = staticVar);
52 Nested()
57 S() :
58 i()
61 S(int32_t i) :
62 i(i)
66 extern "C" int32_t bar(int32_t x);
68 extern "C" int32_t bar2(int32_t x);
70 extern "C" int32_t bar4(int32_t x = 42);
72 extern int32_t baz(int32_t x);
74 extern int32_t baz2(int32_t x);
76 extern int32_t baz4(int32_t x = 42);
78 extern size_t baz5(size_t x = 42);
80 extern size_t& bazRef(size_t& x);
82 enum class E : int64_t
84 m = 1LL,
87 enum class MS : uint8_t
89 dm = 0u,
92 namespace MSN
94 static S const s = S(42);
97 struct W1 final
99 MS ms;
100 /* MSN */ S msn;
101 W1()
104 W1(MS ms, /* MSN */ S msn = S(42)) :
105 ms(ms),
106 msn(msn)
110 struct W2 final
112 W1 w1;
113 W2() :
114 w1()
117 W2(W1 w1) :
118 w1(w1)
122 extern W2 w2;
124 extern void enums(uint64_t e = $?:32=1LLU|64=static_cast<uint64_t>(E::m)$, uint8_t e2 = static_cast<uint8_t>(w2.w1.ms), S s = static_cast<S>(w2.w1.msn));
126 extern S s;
128 extern void aggregates(int32_t a = s.i, int32_t b = s.get(1, 2), int32_t c = S::get(), int32_t d = S::staticVar);
130 struct S2 final
132 S s;
133 struct S3 final
135 static int32_t i;
136 S3()
141 S2() :
145 S2(S s) :
146 s(s)
150 extern S2 s2;
152 extern void chains(int32_t a = s2.s.i, int32_t b = S2::S3::i);
154 extern S* ptr;
156 extern int32_t(*f)(int32_t );
158 extern void special(int32_t a = ptr->i, int32_t b = ptr->get(1, 2), int32_t j = (*f)(1));
160 extern void variadic(int32_t _param_0, ...);
164 int foo(int x)
166 return x * 42;
169 extern (C) int fun();
170 extern (C++) int fun2();
172 extern (C) int bar(int x)
174 return x * 42;
177 extern (C) static int bar2(int x)
179 return x * 42;
182 extern (C) private int bar3(int x)
184 return x * 42;
187 extern (C) int bar4(int x = 42)
189 return x * 42;
192 extern (C++) int baz(int x)
194 return x * 42;
197 extern (C++) static int baz2(int x)
199 return x * 42;
202 extern (C++) private int baz3(int x)
204 return x * 42;
207 extern (C++) int baz4(int x = 42)
209 return x * 42;
212 extern (C++) size_t baz5(size_t x = 42)
214 return x * 42;
217 extern (C++) ref size_t bazRef(return ref size_t x)
219 return x;
222 extern (C++):
224 enum E : long
226 m = 1
229 enum MS : ubyte { dm }
230 enum MSN : S { s = S(42) }
231 struct W1 { MS ms; MSN msn; }
232 struct W2 { W1 w1; }
233 __gshared W2 w2;
235 void enums(ulong e = E.m, ubyte e2 = w2.w1.ms, S s = w2.w1.msn) {}
237 struct S
239 int i;
240 int get(int, int);
241 static int get();
242 __gshared const int staticVar;
244 void useVars(int pi = i, int psv = staticVar) {}
246 struct Nested
248 void useStaticVar(int i = staticVar) {}
252 __gshared S s;
254 void aggregates(int a = s.i, int b = s.get(1, 2), int c = S.get(), int d = S.staticVar) {}
256 struct S2
259 S s;
260 static struct S3
262 __gshared int i = 3;
266 __gshared S2 s2;
268 void chains(int a = s2.s.i, int b = S2.S3.i) {}
270 __gshared S* ptr;
271 __gshared int function(int) f;
273 void special(int a = ptr.i, int b = ptr.get(1, 2), int j = f(1)) {}
275 import core.stdc.stdarg;
276 void variadic(int, ...) {}