mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-26 00:34:06 +00:00
Add test case for the need for fake_read callbacks
This commit is contained in:
parent
d4c364347c
commit
125326e4ed
41
src/test/ui/generator/drop-track-addassign-yield.rs
Normal file
41
src/test/ui/generator/drop-track-addassign-yield.rs
Normal 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()
|
||||
}
|
Loading…
Reference in New Issue
Block a user