| /* REQUIRED_ARGS: -preview=dip1000 |
| TEST_OUTPUT: |
| --- |
| fail_compilation/test18644.d(15): Error: storing reference to stack allocated value returned by `foo()` into allocated memory causes it to escape |
| fail_compilation/test18644.d(16): Error: escaping reference to stack allocated value returned by `foo()` |
| fail_compilation/test18644.d(22): Error: escaping reference to stack allocated value returned by `foo()` |
| --- |
| */ |
| |
| // https://issues.dlang.org/show_bug.cgi?id=18644 |
| |
| @safe int* test1() { |
| int i; |
| int* foo() { return &i; } |
| int*[] b = [foo()]; |
| return foo(); |
| } |
| |
| @safe ref int test2() { |
| int i; |
| ref int foo() { return i; } |
| return foo(); |
| } |