ldc/tests/codegen/call_args_evalorder.d

47 lines
674 B
D

// RUN: %ldc -run %s
void checkInt(int a, int b, int c)
{
assert(a == 1);
assert(b == 2);
assert(c == 3);
}
int incrementBy2AndReturn2(ref int a)
{
a += 2;
return 2;
}
// ---
struct BigStruct
{
long[33] blub;
int v;
this(int v) { this.v = v; }
}
void checkBigStruct(BigStruct a, BigStruct b, BigStruct c)
{
assert(a.v == 1);
assert(b.v == 2);
assert(c.v == 3);
}
BigStruct incrementBy2AndReturn2(ref BigStruct a)
{
a.v += 2;
return BigStruct(2);
}
// ---
void main()
{
int a = 1;
checkInt(a, incrementBy2AndReturn2(a), a);
auto s = BigStruct(1);
checkBigStruct(s, incrementBy2AndReturn2(s), s);
}