https://issues.dlang.org/show_bug.cgi?id=20581
Issue ID: 20581
Summary: DIP1000 wrongly flags hidden ref temporary
Product: D
Version: D2
Hardware: All
OS: All
Status: NEW
Severity: major
Priority: P1
Component: dmd
Assignee: [email protected]
Reporter: [email protected]
Compiling phobos unittests with -checkaction=context causes DIP1000 to raise an
error about a hidden temporary outliving the referenced content.
Reduced example:
void main() @safe
{
int[5] a = [ 1, 2, 3, 4, 5 ];
assert(retro(a[]).source is a[]); // => Hidden temporary __assertOp4
}
auto retro(return scope int[] s) @safe
{
static struct R
{
int[] source;
}
return R(s);
}
safe.d(6): Error: address of variable a assigned to __assertOp4 with longer
lifetime
--