blob: 49c0707121198d1d27d03edcc40acda4f0db411c [file] [log] [blame]
/* REQUIRED_ARGS: -preview=dip1000
TEST_OUTPUT:
---
fail_compilation/fix18575.d(27): Error: returning `s.foo()` escapes a reference to parameter `s`
fail_compilation/fix18575.d(31): Error: returning `s.foo()` escapes a reference to parameter `s`
fail_compilation/fix18575.d(35): Error: returning `s.abc()` escapes a reference to parameter `s`
fail_compilation/fix18575.d(39): Error: returning `s.ghi(t)` escapes a reference to parameter `t`
---
*/
// https://issues.dlang.org/show_bug.cgi?id=18575
@safe:
struct S {
@safe:
int x;
void bar() { }
auto foo() { return &this.bar; }
auto def() { return &bar; }
auto abc() { return &x; }
auto ghi(ref S s) { return &s.bar; }
}
auto f(S s) {
return s.foo();
}
auto g(S s) {
return s.foo();
}
auto h(S s) {
return s.abc();
}
auto j(S s, S t) {
return s.ghi(t);
}