//@ min-lldb-version: 310 //@ compile-flags:-g // === GDB TESTS =================================================================================== // gdb-command:break zst_interferes_with_prologue::Foo::var_return_opt_try // gdb-command:run // gdb-command:print self // gdb-command:next // gdb-command:print self // gdb-command:print $1 == $2 // gdb-check:true // === LLDB TESTS ================================================================================== // lldb-command:b "zst_interferes_with_prologue::Foo::var_return_opt_try" // lldb-command:run // lldb-command:expr self // lldb-command:next // lldb-command:expr self // lldb-command:print $0 == $1 // lldb-check:true struct Foo { a: usize, } impl Foo { #[inline(never)] fn get_a(&self) -> Option { Some(self.a) } #[inline(never)] fn var_return(&self) -> usize { let r = self.get_a().unwrap(); r } #[inline(never)] fn var_return_opt_unwrap(&self) -> Option { let r = self.get_a().unwrap(); Some(r) } #[inline(never)] fn var_return_opt_match(&self) -> Option { let r = match self.get_a() { None => return None, Some(a) => a, }; Some(r) } #[inline(never)] fn var_return_opt_try(&self) -> Option { let r = self.get_a()?; Some(r) } } fn main() { let f1 = Foo{ a: 1 }; let f2 = Foo{ a: 1 }; f1.var_return(); f1.var_return_opt_unwrap(); f1.var_return_opt_match(); f2.var_return_opt_try(); }