Skip to content

Commit d3b4655

Browse files
Rollup merge of rust-lang#84456 - richkadel:issue-84421, r=tmandry
Fix ICE if original_span(fn_sig) returns a span not in body sourcefile Fixes: rust-lang#84421 r? `@tmandry` fyi: `@wesleywiser` `@sdroege` `@rajivshah3`
2 parents c00bb72 + a07bf2e commit d3b4655

File tree

2 files changed

+4
-8
lines changed

2 files changed

+4
-8
lines changed

compiler/rustc_mir/src/transform/coverage/mod.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,8 @@ impl<'a, 'tcx> Instrumentor<'a, 'tcx> {
111111
let body_span = hir_body.value.span;
112112
let source_file = source_map.lookup_source_file(body_span.lo());
113113
let fn_sig_span = match some_fn_sig.filter(|fn_sig| {
114-
Lrc::ptr_eq(&source_file, &source_map.lookup_source_file(fn_sig.span.hi()))
114+
fn_sig.span.ctxt() == body_span.ctxt()
115+
&& Lrc::ptr_eq(&source_file, &source_map.lookup_source_file(fn_sig.span.hi()))
115116
}) {
116117
Some(fn_sig) => fn_sig.span.with_hi(body_span.lo()),
117118
None => body_span.shrink_to_lo(),

compiler/rustc_mir/src/transform/coverage/spans.rs

+2-7
Original file line numberDiff line numberDiff line change
@@ -240,13 +240,13 @@ impl<'a, 'tcx> CoverageSpans<'a, 'tcx> {
240240
/// to be).
241241
pub(super) fn generate_coverage_spans(
242242
mir_body: &'a mir::Body<'tcx>,
243-
fn_sig_span: Span,
243+
fn_sig_span: Span, // Ensured to be same SourceFile and SyntaxContext as `body_span`
244244
body_span: Span,
245245
basic_coverage_blocks: &'a CoverageGraph,
246246
) -> Vec<CoverageSpan> {
247247
let mut coverage_spans = CoverageSpans {
248248
mir_body,
249-
fn_sig_span: fn_sig_source_span(fn_sig_span, body_span),
249+
fn_sig_span,
250250
body_span,
251251
basic_coverage_blocks,
252252
sorted_spans_iter: None,
@@ -731,11 +731,6 @@ pub(super) fn filtered_terminator_span(
731731
}
732732
}
733733

734-
#[inline]
735-
fn fn_sig_source_span(fn_sig_span: Span, body_span: Span) -> Span {
736-
original_sp(fn_sig_span, body_span).with_ctxt(body_span.ctxt())
737-
}
738-
739734
#[inline]
740735
fn function_source_span(span: Span, body_span: Span) -> Span {
741736
let span = original_sp(span, body_span).with_ctxt(body_span.ctxt());

0 commit comments

Comments
 (0)