| //@ compile-flags:-g | |
| //@ disable-gdb-pretty-printers | |
| //@ ignore-backends: gcc | |
| // === GDB TESTS =================================================================================== | |
| //@ gdb-command:run | |
| //@ gdb-command:print a | |
| //@ gdb-check:$1 = 5 | |
| //@ gdb-command:print c | |
| //@ gdb-check:$2 = 6 | |
| //@ gdb-command:print d | |
| //@ gdb-check:$3 = 7 | |
| //@ gdb-command:continue | |
| //@ gdb-command:print a | |
| //@ gdb-check:$4 = 7 | |
| //@ gdb-command:print c | |
| //@ gdb-check:$5 = 6 | |
| //@ gdb-command:print e | |
| //@ gdb-check:$6 = 8 | |
| //@ gdb-command:continue | |
| //@ gdb-command:print a | |
| //@ gdb-check:$7 = 8 | |
| //@ gdb-command:print c | |
| //@ gdb-check:$8 = 6 | |
| // === LLDB TESTS ================================================================================== | |
| //@ lldb-command:run | |
| //@ lldb-command:v a | |
| //@ lldb-check:(int) a = 5 | |
| //@ lldb-command:v c | |
| //@ lldb-check:(int) c = 6 | |
| //@ lldb-command:v d | |
| //@ lldb-check:(int) d = 7 | |
| //@ lldb-command:continue | |
| //@ lldb-command:v a | |
| //@ lldb-check:(int) a = 7 | |
| //@ lldb-command:v c | |
| //@ lldb-check:(int) c = 6 | |
| //@ lldb-command:v e | |
| //@ lldb-check:(int) e = 8 | |
| //@ lldb-command:continue | |
| //@ lldb-command:v a | |
| //@ lldb-check:(int) a = 8 | |
| //@ lldb-command:v c | |
| //@ lldb-check:(int) c = 6 | |
| #![feature(coroutines, coroutine_trait, stmt_expr_attributes)] | |
| use std::ops::Coroutine; | |
| use std::pin::Pin; | |
| fn main() { | |
| let mut a = 5; | |
| let mut b = #[coroutine] | |
| || { | |
| let c = 6; // Live across multiple yield points | |
| let d = 7; // Live across only one yield point | |
| yield; | |
| _zzz(); // #break | |
| a = d; | |
| let e = 8; // Live across zero yield points | |
| _zzz(); // #break | |
| a = e; | |
| yield; | |
| _zzz(); // #break | |
| a = c; | |
| }; | |
| Pin::new(&mut b).resume(()); | |
| Pin::new(&mut b).resume(()); | |
| Pin::new(&mut b).resume(()); | |
| _zzz(); // #break | |
| } | |
| fn _zzz() { | |
| () | |
| } |