Auto merge of #141372 - khuey:ir_call_dbg_loc, r=jieyouxu

Use the fn_span when emitting function calls for better debug info.

This especially improves the developer experience for long chains of function calls that span multiple lines, which is common with builder patterns, chains of iterator/future combinators, etc.

try-job: armhf-gnu
try-job: test-various
try-job: x86_64-msvc-1
try-job: arm-android

r? `@jieyouxu`
This commit is contained in:
bors
2025-05-24 17:48:21 +00:00
3 changed files with 48 additions and 0 deletions

View File

@@ -1181,6 +1181,7 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> {
(_, Some(llfn)) => llfn,
_ => span_bug!(span, "no instance or llfn for call"),
};
self.set_debug_loc(bx, mir::SourceInfo { span: fn_span, ..source_info });
helper.do_call(
self,
bx,

View File

@@ -0,0 +1,35 @@
//@ compile-flags:-g
//@ min-gdb-version: 16.0
// === GDB TESTS ===================================================================================
// gdb-command: run
// gdb-check:[...]#break[...]
// gdb-command: up
// gdb-check:[...]zzz[...]
// === LLDB TESTS ==================================================================================
// lldb-command:run
// lldb-check:[...]#break[...]
// lldb-command: up
// lldb-check:[...]zzz[...]
struct Foo;
impl Foo {
fn bar(self) -> Foo {
println!("bar");
self
}
fn baz(self) -> Foo {
println!("baz"); // #break
self
}
}
fn main() {
let f = Foo;
f.bar() // aaa
.baz(); // zzz
}

View File

@@ -0,0 +1,12 @@
//@ run-fail
//@ compile-flags: -Cstrip=none -Cdebuginfo=line-tables-only -Copt-level=0
//@ exec-env:RUST_BACKTRACE=1
//@ regex-error-pattern: location-detail-unwrap-multiline\.rs:11(:10)?\n
//@ needs-unwind
//@ ignore-android FIXME #17520
fn main() {
let opt: Option<u32> = None;
opt
.unwrap();
}