// https://issues.dlang.org/show_bug.cgi?id=21794 /* TEST_OUTPUT: --- 0 0u 0L 0LU 0.0F 0.0 0.0L --- */ bool fun(void* p) { const x = cast(ulong)p; return 1; } static assert(fun(null)); T fun2(T)(void* p) { const x = cast(T)p; return x; } // These were an error before, they were returning a NullExp instead of IntegerExp/RealExp static assert(fun2!int(null) == 0); static assert(fun2!uint(null) == 0); static assert(fun2!long(null) == 0); static assert(fun2!ulong(null) == 0); static assert(fun2!float(null) == 0); static assert(fun2!double(null) == 0); static assert(fun2!real(null) == 0); // These were printing 'null' instead of the corresponding number const i = cast(int)null; const ui = cast(uint)null; const l = cast(long)null; const ul = cast(ulong)null; const f = cast(float)null; const d = cast(double)null; const r = cast(real)null; pragma(msg, i); pragma(msg, ui); pragma(msg, l); pragma(msg, ul); pragma(msg, f); pragma(msg, d); pragma(msg, r);