/* REQUIRED_ARGS: -preview=dip1000 TEST_OUTPUT: --- fail_compilation/diag23295.d(21): Error: scope variable `x` assigned to non-scope parameter `y` calling `foo` fail_compilation/diag23295.d(32): which is assigned to non-scope parameter `z` fail_compilation/diag23295.d(34): which is not `scope` because of `f = & z` fail_compilation/diag23295.d(24): Error: scope variable `ex` assigned to non-scope parameter `e` calling `thro` fail_compilation/diag23295.d(39): which is not `scope` because of `throw e` --- */ // explain why scope inference failed // https://issues.dlang.org/show_bug.cgi?id=23295 @safe: void main() { scope int* x; foo(x, null); scope Exception ex; thro(ex); } auto foo(int* y, int** w) { fooImpl(y, null); } auto fooImpl(int* z, int** w) { auto f = &z; } auto thro(Exception e) { throw e; }