| //@ ignore-android |
| //@ ignore-aarch64 |
| //@ min-lldb-version: 1800 |
| //@ min-gdb-version: 13.0 |
| |
| //@ aux-build:macro-stepping.rs |
| |
| #![allow(unused)] |
| |
| #[macro_use] |
| extern crate macro_stepping; // exports new_scope!() |
| |
| //@ compile-flags:-g -Zmir-enable-passes=-SingleUseConsts |
| // SingleUseConsts shouldn't need to be disabled, see #128945 |
| |
| // === GDB TESTS =================================================================================== |
| |
| // gdb-command:run |
| // gdb-command:next |
| // gdb-command:frame |
| // gdb-check:[...]#loc1[...] |
| // gdb-command:next |
| // gdb-command:frame |
| // gdb-check:[...]#loc2[...] |
| // gdb-command:next |
| // gdb-command:frame |
| // gdb-check:[...]#loc3[...] |
| // gdb-command:next |
| // gdb-command:frame |
| // gdb-check:[...]#loc4[...] |
| // gdb-command:next |
| // gdb-command:frame |
| // gdb-check:[...]#loc5[...] |
| // gdb-command:next |
| // gdb-command:frame |
| // gdb-check:[...]#loc6[...] |
| |
| // gdb-command:continue |
| // gdb-command:step |
| // gdb-command:frame |
| // gdb-check:[...]#inc-loc1[...] |
| // gdb-command:next |
| // gdb-command:frame |
| // gdb-check:[...]#inc-loc2[...] |
| // gdb-command:next |
| // gdb-command:frame |
| // gdb-check:[...]#inc-loc3[...] |
| |
| // === LLDB TESTS ================================================================================== |
| |
| // lldb-command:set set stop-line-count-before 0 |
| // lldb-command:set set stop-line-count-after 1 |
| // Can't set both to zero or lldb will stop printing source at all. So it will output the current |
| // line and the next. We deal with this by having at least 2 lines between the #loc's |
| |
| // lldb-command:run |
| // lldb-command:next |
| // lldb-command:frame select |
| // lldb-check:[...] #loc1 [...] |
| // lldb-command:next |
| // lldb-command:frame select |
| // lldb-check:[...] #loc2 [...] |
| // lldb-command:next |
| // lldb-command:frame select |
| // lldb-check:[...] #loc3 [...] |
| // lldb-command:next |
| // lldb-command:frame select |
| // lldb-check:[...] #loc4 [...] |
| // lldb-command:next |
| // lldb-command:frame select |
| // lldb-check:[...] #loc5 [...] |
| |
| // lldb-command:continue |
| // lldb-command:step |
| // lldb-command:frame select |
| // lldb-check:[...] #inc-loc1 [...] |
| // lldb-command:next |
| // lldb-command:frame select |
| // lldb-check:[...] #inc-loc2 [...] |
| // lldb-command:next |
| // lldb-command:frame select |
| // lldb-check:[...] #inc-loc1 [...] |
| // lldb-command:next |
| // lldb-command:frame select |
| // lldb-check:[...] #inc-loc2 [...] |
| // lldb-command:next |
| // lldb-command:frame select |
| // lldb-check:[...] #inc-loc3 [...] |
| |
| #[collapse_debuginfo(yes)] |
| macro_rules! foo { |
| () => { |
| let a = 1; opaque(a); |
| let b = 2; opaque(b); |
| let c = 3; opaque(c); |
| }; |
| } |
| |
| #[collapse_debuginfo(yes)] |
| macro_rules! foo2 { |
| () => { |
| foo!(); |
| let x = 1; opaque(x); |
| foo!(); |
| }; |
| } |
| |
| fn main() { |
| zzz(); // #break |
| |
| foo!(); // #loc1 |
| |
| foo2!(); // #loc2 |
| |
| let x = vec![42]; // #loc3 |
| |
| new_scope!(); // #loc4 |
| |
| println!("Hello {}", // #loc5 |
| "world"); |
| |
| zzz(); // #loc6 |
| |
| included(); // #break |
| } |
| |
| fn zzz() {()} |
| |
| fn opaque(_: u32) {} |
| |
| include!("macro-stepping.inc"); |