/* REQUIRED_ARGS: -preview=dip1000 TEST_OUTPUT: --- fail_compilation/test23073.d(28): Error: scope variable `c` assigned to non-scope parameter `c` calling `assignNext` fail_compilation/test23073.d(22): which is not `scope` because of `c.next = c` --- */ // https://issues.dlang.org/show_bug.cgi?id=23073 // scope inference from pure doesn't consider self-assignment @safe: class C { C next; } void assignNext(C c) pure nothrow @nogc { c.next = c; } C escape() @nogc { scope C c = new C(); assignNext(c); return c.next; } void main() { C dangling = escape(); }