//! Regression test for #122630 | |
//@ compile-flags: -Zvalidate-mir | |
#![feature(coroutines, coroutine_trait, yield_expr)] | |
use std::ops::Coroutine; | |
const FOO_SIZE: usize = 1024; | |
struct Foo([u8; FOO_SIZE]); | |
impl Drop for Foo { | |
fn drop(&mut self) {} | |
} | |
fn overlap_move_points() -> impl Coroutine<Yield = ()> { | |
#[coroutine] static || { | |
let first = Foo([0; FOO_SIZE]); | |
yield; | |
let second = first; | |
yield; | |
let second = first; | |
//~^ ERROR: use of moved value: `first` [E0382] | |
yield; | |
} | |
} | |
fn main() {} |