Rollup merge of #84456 - richkadel:issue-84421, r=tmandry
Fix ICE if original_span(fn_sig) returns a span not in body sourcefile Fixes: #84421 r? ````@tmandry```` fyi: ````@wesleywiser```` ````@sdroege```` ````@rajivshah3````
This commit is contained in:
commit
e07c7b5641
2 changed files with 4 additions and 8 deletions
|
@ -111,7 +111,8 @@ impl<'a, 'tcx> Instrumentor<'a, 'tcx> {
|
|||
let body_span = hir_body.value.span;
|
||||
let source_file = source_map.lookup_source_file(body_span.lo());
|
||||
let fn_sig_span = match some_fn_sig.filter(|fn_sig| {
|
||||
Lrc::ptr_eq(&source_file, &source_map.lookup_source_file(fn_sig.span.hi()))
|
||||
fn_sig.span.ctxt() == body_span.ctxt()
|
||||
&& Lrc::ptr_eq(&source_file, &source_map.lookup_source_file(fn_sig.span.hi()))
|
||||
}) {
|
||||
Some(fn_sig) => fn_sig.span.with_hi(body_span.lo()),
|
||||
None => body_span.shrink_to_lo(),
|
||||
|
|
|
@ -240,13 +240,13 @@ impl<'a, 'tcx> CoverageSpans<'a, 'tcx> {
|
|||
/// to be).
|
||||
pub(super) fn generate_coverage_spans(
|
||||
mir_body: &'a mir::Body<'tcx>,
|
||||
fn_sig_span: Span,
|
||||
fn_sig_span: Span, // Ensured to be same SourceFile and SyntaxContext as `body_span`
|
||||
body_span: Span,
|
||||
basic_coverage_blocks: &'a CoverageGraph,
|
||||
) -> Vec<CoverageSpan> {
|
||||
let mut coverage_spans = CoverageSpans {
|
||||
mir_body,
|
||||
fn_sig_span: fn_sig_source_span(fn_sig_span, body_span),
|
||||
fn_sig_span,
|
||||
body_span,
|
||||
basic_coverage_blocks,
|
||||
sorted_spans_iter: None,
|
||||
|
@ -731,11 +731,6 @@ pub(super) fn filtered_terminator_span(
|
|||
}
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn fn_sig_source_span(fn_sig_span: Span, body_span: Span) -> Span {
|
||||
original_sp(fn_sig_span, body_span).with_ctxt(body_span.ctxt())
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn function_source_span(span: Span, body_span: Span) -> Span {
|
||||
let span = original_sp(span, body_span).with_ctxt(body_span.ctxt());
|
||||
|
|
Loading…
Add table
Reference in a new issue