Skip to content

Commit 29b5c82

Browse files
committed
Add file and line metadata for closures
1 parent fe32b95 commit 29b5c82

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

compiler/rustc_codegen_llvm/src/debuginfo/metadata.rs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1152,15 +1152,23 @@ fn build_closure_env_di_node<'ll, 'tcx>(
11521152
let containing_scope = get_namespace_for_item(cx, def_id);
11531153
let type_name = compute_debuginfo_type_name(cx.tcx, closure_env_type, false);
11541154

1155+
let closure_span = cx.tcx.def_span(def_id);
1156+
let (file_metadata, line_number) = if !closure_span.is_dummy() {
1157+
let loc = cx.lookup_debug_loc(closure_span.lo());
1158+
(file_metadata(cx, &loc.file), loc.line)
1159+
} else {
1160+
(unknown_file_metadata(cx), UNKNOWN_LINE_NUMBER)
1161+
};
1162+
11551163
type_map::build_type_with_children(
11561164
cx,
11571165
type_map::stub(
11581166
cx,
11591167
Stub::Struct,
11601168
unique_type_id,
11611169
&type_name,
1162-
unknown_file_metadata(cx),
1163-
UNKNOWN_LINE_NUMBER,
1170+
file_metadata,
1171+
line_number,
11641172
cx.size_and_align_of(closure_env_type),
11651173
Some(containing_scope),
11661174
DIFlags::FlagZero,

tests/codegen/issue-98678.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,8 @@
88
// CHECK: !DICompositeType({{.*"}}MyType{{".*}}file: ![[#FILE]]{{.*}}line: [[# @LINE + 1]],
99
pub struct MyType;
1010

11-
pub fn foo(_: MyType) {}
11+
pub fn foo(_: MyType) {
12+
// CHECK: !DICompositeType({{.*"[{]}}closure_env#0{{[}]".*}}file: ![[#FILE]]{{.*}}line: [[# @LINE + 1]],
13+
let closure = |x| x;
14+
closure(0);
15+
}

0 commit comments

Comments
 (0)