| /* REQUIRED_ARGS: -preview=dip1000 |
| TEST_OUTPUT: |
| --- |
| fail_compilation/test17892.d(27): Error: returning `s.pointer1()` escapes a reference to local variable `s` |
| fail_compilation/test17892.d(29): Error: returning `s.pointer2()` escapes a reference to local variable `s` |
| fail_compilation/test17892.d(31): Error: returning `s.pointer3()` escapes a reference to local variable `s` |
| --- |
| */ |
| |
| |
| // https://issues.dlang.org/show_bug.cgi?id=17892 |
| |
| struct S |
| { |
| @safe: |
| int x; |
| int[1] y; |
| auto pointer1() return { return &x; } |
| auto pointer2() return { return &y[0]; } |
| auto pointer3() return { return &y[0..1][0]; } |
| } |
| |
| @safe int* testPointer(int b) |
| { |
| S s; |
| if (b == 1) |
| return s.pointer1(); |
| else if (b == 2) |
| return s.pointer2(); |
| else |
| return s.pointer3(); |
| } |