| /+ |
| REQUIRED_ARGS: -HC -c -o- |
| PERMUTE_ARGS: |
| TEST_OUTPUT: |
| --- |
| // Automatically generated by Digital Mars D Compiler |
| |
| #pragma once |
| |
| #include <assert.h> |
| #include <math.h> |
| #include <stddef.h> |
| #include <stdint.h> |
| |
| #ifdef CUSTOM_D_ARRAY_TYPE |
| #define _d_dynamicArray CUSTOM_D_ARRAY_TYPE |
| #else |
| /// Represents a D [] array |
| template<typename T> |
| struct _d_dynamicArray final |
| { |
| size_t length; |
| T *ptr; |
| |
| _d_dynamicArray() : length(0), ptr(NULL) { } |
| |
| _d_dynamicArray(size_t length_in, T *ptr_in) |
| : length(length_in), ptr(ptr_in) { } |
| |
| T& operator[](const size_t idx) { |
| assert(idx < length); |
| return ptr[idx]; |
| } |
| |
| const T& operator[](const size_t idx) const { |
| assert(idx < length); |
| return ptr[idx]; |
| } |
| }; |
| #endif |
| |
| struct S final |
| { |
| int32_t i; |
| int32_t get(int32_t , int32_t ); |
| static int32_t get(); |
| static const int32_t staticVar; |
| void useVars(int32_t pi = i, int32_t psv = staticVar); |
| struct Nested final |
| { |
| void useStaticVar(int32_t i = staticVar); |
| Nested() |
| { |
| } |
| }; |
| |
| S() : |
| i() |
| { |
| } |
| S(int32_t i) : |
| i(i) |
| {} |
| }; |
| |
| extern "C" int32_t bar(int32_t x); |
| |
| extern "C" int32_t bar2(int32_t x); |
| |
| extern "C" int32_t bar4(int32_t x = 42); |
| |
| extern int32_t baz(int32_t x); |
| |
| extern int32_t baz2(int32_t x); |
| |
| extern int32_t baz4(int32_t x = 42); |
| |
| extern size_t baz5(size_t x = 42); |
| |
| extern size_t& bazRef(size_t& x); |
| |
| extern size_t bazOut(size_t& x); |
| |
| enum class E : int64_t |
| { |
| m = 1LL, |
| }; |
| |
| enum class MS : uint8_t |
| { |
| dm = 0u, |
| }; |
| |
| namespace MSN |
| { |
| static S const s = S(42); |
| }; |
| |
| struct W1 final |
| { |
| MS ms; |
| /* MSN */ S msn; |
| W1() |
| { |
| } |
| W1(MS ms, /* MSN */ S msn = S(42)) : |
| ms(ms), |
| msn(msn) |
| {} |
| }; |
| |
| struct W2 final |
| { |
| W1 w1; |
| W2() : |
| w1() |
| { |
| } |
| W2(W1 w1) : |
| w1(w1) |
| {} |
| }; |
| |
| extern W2 w2; |
| |
| 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)); |
| |
| extern S s; |
| |
| 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); |
| |
| struct S2 final |
| { |
| S s; |
| struct S3 final |
| { |
| static int32_t i; |
| S3() |
| { |
| } |
| }; |
| |
| S2() : |
| s() |
| { |
| } |
| S2(S s) : |
| s(s) |
| {} |
| }; |
| |
| extern S2 s2; |
| |
| extern void chains(int32_t a = s2.s.i, int32_t b = S2::S3::i); |
| |
| extern S* ptr; |
| |
| extern int32_t(*f)(int32_t ); |
| |
| extern void special(int32_t a = ptr->i, int32_t b = ptr->get(1, 2), int32_t j = (*f)(1)); |
| |
| extern void variadic(int32_t _param_0, ...); |
| --- |
| +/ |
| |
| int foo(int x) |
| { |
| return x * 42; |
| } |
| |
| extern (C) int fun(); |
| extern (C++) int fun2(); |
| |
| extern (C) int bar(int x) |
| { |
| return x * 42; |
| } |
| |
| extern (C) static int bar2(int x) |
| { |
| return x * 42; |
| } |
| |
| extern (C) private int bar3(int x) |
| { |
| return x * 42; |
| } |
| |
| extern (C) int bar4(int x = 42) |
| { |
| return x * 42; |
| } |
| |
| extern (C++) int baz(int x) |
| { |
| return x * 42; |
| } |
| |
| extern (C++) static int baz2(int x) |
| { |
| return x * 42; |
| } |
| |
| extern (C++) private int baz3(int x) |
| { |
| return x * 42; |
| } |
| |
| extern (C++) int baz4(int x = 42) |
| { |
| return x * 42; |
| } |
| |
| extern (C++) size_t baz5(size_t x = 42) |
| { |
| return x * 42; |
| } |
| |
| extern (C++) ref size_t bazRef(return ref size_t x) |
| { |
| return x; |
| } |
| |
| extern (C++) size_t bazOut(out size_t x) |
| { |
| return x; |
| } |
| |
| extern (C++): |
| |
| enum E : long |
| { |
| m = 1 |
| } |
| |
| enum MS : ubyte { dm } |
| enum MSN : S { s = S(42) } |
| struct W1 { MS ms; MSN msn; } |
| struct W2 { W1 w1; } |
| __gshared W2 w2; |
| |
| void enums(ulong e = E.m, ubyte e2 = w2.w1.ms, S s = w2.w1.msn) {} |
| |
| struct S |
| { |
| int i; |
| int get(int, int); |
| static int get(); |
| __gshared const int staticVar; |
| |
| void useVars(int pi = i, int psv = staticVar) {} |
| |
| struct Nested |
| { |
| void useStaticVar(int i = staticVar) {} |
| } |
| } |
| |
| __gshared S s; |
| |
| void aggregates(int a = s.i, int b = s.get(1, 2), int c = S.get(), int d = S.staticVar) {} |
| |
| struct S2 |
| { |
| |
| S s; |
| static struct S3 |
| { |
| __gshared int i = 3; |
| } |
| } |
| |
| __gshared S2 s2; |
| |
| void chains(int a = s2.s.i, int b = S2.S3.i) {} |
| |
| __gshared S* ptr; |
| __gshared int function(int) f; |
| |
| void special(int a = ptr.i, int b = ptr.get(1, 2), int j = f(1)) {} |
| |
| import core.stdc.stdarg; |
| void variadic(int, ...) {} |