blob: 9a4db353e0a20a635c2d7f5c5a0f324977532262 [file] [log] [blame]
// https://issues.dlang.org/show_bug.cgi?id=21997
struct Strukt
{
int i;
string s;
}
int nonPureFunc(int i)
{
return 2 * i;
}
int mainCtfe()
{
auto pureFunc = cast(int function(int) pure) &nonPureFunc;
assert(pureFunc(2) == 4);
auto baseFunc = cast(int function(int)) pureFunc;
assert(baseFunc(3) == 6);
/*
Still missing delegates: https://issues.dlang.org/show_bug.cgi?id=17487
static struct S {
int i;
int f(int j) { return i * j; }
}
S s = S(5);
auto pureDel = cast(int delegate(int) pure) &s.f;
assert(pureDel(3) == 15);
auto baseDel = cast(int delegate(int)) pureDel;
assert(baseDel(4) == 20);
*/
{
shared Strukt shStr;
Strukt str = *cast(Strukt*) &shStr;
shared(Strukt)* ptr = cast(shared(Strukt)*) &str;
}
return 0;
}
enum forceCTFE = mainCtfe();