blob: 27ddad41604df7b764180cacd1dfd4ac696c125f [file] [log] [blame]
// REQUIRED_ARGS: -w
// PERMUTE_ARGS: -debug
/******************************************/
// https://issues.dlang.org/show_bug.cgi?id=3882
/*
TEST_OUTPUT:
---
fail_compilation/fail3882.d(23): Warning: calling `fail3882.strictlyPure!int.strictlyPure` without side effects discards return value of type `int`; prepend a `cast(void)` if intentional
fail_compilation/fail3882.d(27): Warning: calling `fp` without side effects discards return value of type `int`; prepend a `cast(void)` if intentional
---
*/
@safe pure nothrow T strictlyPure(T)(T x)
{
return x*x;
}
void main()
{
int x = 3;
strictlyPure(x);
// https://issues.dlang.org/show_bug.cgi?id=12649
auto fp = &strictlyPure!int;
fp(x);
}
/******************************************/
// bugfix in TypeFunction::purityLevel
/*
TEST_OUTPUT:
---
fail_compilation/fail3882.d(48): Warning: calling `fail3882.f1` without side effects discards return value of type `int`; prepend a `cast(void)` if intentional
fail_compilation/fail3882.d(49): Warning: calling `fail3882.f2` without side effects discards return value of type `int`; prepend a `cast(void)` if intentional
Error: warnings are treated as errors
Use -wi if you wish to treat warnings only as informational.
---
*/
nothrow pure int f1(immutable(int)[] a) { return 0; }
nothrow pure int f2(immutable(int)* p) { return 0; }
void test_bug()
{
f1([]);
f2(null);
}