//! 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 { #[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() {}