76 lines
1.4 KiB
D
76 lines
1.4 KiB
D
import core.stdc.stdio : printf;
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
T enforce7452(T, string file = __FILE__, size_t line = __LINE__)
|
|
(T value, lazy const(char)[] msg = null) @safe pure
|
|
{
|
|
if (!value)
|
|
throw new Exception(msg ? msg.idup : "Enforcement failed", file, line);
|
|
return value;
|
|
}
|
|
|
|
int f7452()(int x)
|
|
{
|
|
enforce7452(x > 0);
|
|
return x;
|
|
}
|
|
void g7452() @safe pure
|
|
{
|
|
assert(4 == f7452(4));
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
void e7452b(int, lazy int) pure nothrow @safe {}
|
|
int f7452b()(int x)
|
|
{
|
|
e7452b(x, 0);
|
|
return x;
|
|
}
|
|
void g7452b() pure nothrow @safe
|
|
{
|
|
assert(4 == f7452b(4));
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
int f7452c()(int x)
|
|
{
|
|
auto y = function int() { return 0; };
|
|
return x;
|
|
}
|
|
void g7452c() pure nothrow @safe
|
|
{
|
|
assert(4 == f7452c(4));
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
auto f6332a()() { return 1; }
|
|
int f6332b()() { return 1; }
|
|
|
|
alias f6332a!() F6332a;
|
|
|
|
void g6332() pure nothrow @safe
|
|
{
|
|
auto x = f6332b();
|
|
auto y = f6332a();
|
|
assert(x == y);
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
int main()
|
|
{
|
|
g7452();
|
|
g7452b();
|
|
g7452c();
|
|
g6332();
|
|
|
|
printf("Success\n");
|
|
return 0;
|
|
}
|
|
|
|
|