30 lines
586 B
Rust
30 lines
586 B
Rust
// EMIT_MIR_FOR_EACH_PANIC_STRATEGY
|
|
|
|
// Test that we generate StorageDead on unwind paths for generators.
|
|
//
|
|
// Basic block and local names can safely change, but the StorageDead statements
|
|
// should not go away.
|
|
|
|
#![feature(generators, generator_trait)]
|
|
|
|
struct Foo(i32);
|
|
|
|
impl Drop for Foo {
|
|
fn drop(&mut self) {}
|
|
}
|
|
|
|
struct Bar(i32);
|
|
|
|
fn take<T>(_x: T) {}
|
|
|
|
// EMIT_MIR generator_storage_dead_unwind.main-{closure#0}.StateTransform.before.mir
|
|
fn main() {
|
|
let _gen = || {
|
|
let a = Foo(5);
|
|
let b = Bar(6);
|
|
yield;
|
|
take(a);
|
|
take(b);
|
|
};
|
|
}
|