Add test case for the need for fake_read callbacks

This commit is contained in:
Eric Holk 2022-05-10 13:43:14 -07:00
parent d4c364347c
commit 125326e4ed

View File

@ -0,0 +1,41 @@
// run-pass
// compile-flags: -Zdrop-tracking
// Based on addassign-yield.rs, but with drop tracking enabled. Originally we did not implement
// the fake_read callback on ExprUseVisitor which caused this case to break.
#![feature(generators)]
fn foo() {
let _y = static || {
let x = &mut 0;
*{
yield;
x
} += match String::new() {
_ => 0,
};
};
// Please don't ever actually write something like this
let _z = static || {
let x = &mut 0;
*{
let inner = &mut 1;
*{
yield ();
inner
} += match String::new() {
_ => 1,
};
yield;
x
} += match String::new() {
_ => 2,
};
};
}
fn main() {
foo()
}