// REQUIRED_ARGS: -preview=dip1000 // Test that scope inference works even with non POD array assignment // This is tricky because it gets lowered to something like: // (S[] __assigntmp0 = e[]) , _d_arrayassign_l(this.e[], __assigntmp0) , this.e[]; @safe: struct File { void* f; ~this() scope { } } struct Vector { File[] e; auto assign(File[] e) { this.e[] = e[]; // slice copy } } void test(scope File[] arr, Vector v) { v.assign(arr); }