Using -preview=dip1000, the following program compiles successfully when using DMD 2.098.1, but fails when using DMD 2.099.0-beta.1: --- struct Wrapper { int* ptr; this(return ref int var) @safe { this.ptr = &var; } } void main() @safe { int i; auto w = Wrapper(i); } --- The error message is: --- bug.d(7): Error: address of variable `var` assigned to `this` with longer lifetime ---
Introduced by https://github.com/dlang/dmd/pull/13577
@dkorpel created dlang/dmd pull request #13699 "Fix Issue 22801 - Can't return address of return ref parameter from constructor" fixing this issue: - Fix Issue 22801 - Can't return address of return ref parameter from constructor https://github.com/dlang/dmd/pull/13699
@dkorpel created dlang/dmd pull request #13940 "Fix Issue 22801 - [master] Can't return address of return ref parameter from constructor" fixing this issue: - Fix Issue 22801 - Can't return address of return ref parameter from constructor https://github.com/dlang/dmd/pull/13940
dlang/dmd pull request #13940 "Fix Issue 22801 - [master] Can't return address of return ref parameter from constructor" was merged into master: - 6fe45bc5418216449295a58e24c3b339cdc9fc6e by dkorpel: Fix Issue 22801 - Can't return address of return ref parameter from constructor https://github.com/dlang/dmd/pull/13940