From cc5088d2947c08732645a84d05ba51580352e0fb Mon Sep 17 00:00:00 2001 From: Matthew Jasper Date: Sun, 31 Mar 2019 13:30:51 +0100 Subject: [PATCH] Use more accurate lint root for mutable_borrow_reservation_conflict --- src/librustc_mir/borrow_check/mod.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/librustc_mir/borrow_check/mod.rs b/src/librustc_mir/borrow_check/mod.rs index 255dc2df5b898..275d958a3ed31 100644 --- a/src/librustc_mir/borrow_check/mod.rs +++ b/src/librustc_mir/borrow_check/mod.rs @@ -268,9 +268,16 @@ fn do_mir_borrowck<'a, 'gcx, 'tcx>( for (_, (place, span, context, bk, borrow)) in reservation_warnings { let mut initial_diag = mbcx.report_conflicting_borrow(context, (&place, span), bk, &borrow); + let lint_root = if let ClearCrossCrate::Set(ref vsi) = mbcx.mir.source_scope_local_data { + let scope = mbcx.mir.source_info(context.loc).scope; + vsi[scope].lint_root + } else { + id + }; + // Span and message don't matter; we overwrite them below anyway let mut diag = mbcx.infcx.tcx.struct_span_lint_hir( - MUTABLE_BORROW_RESERVATION_CONFLICT, id, DUMMY_SP, ""); + MUTABLE_BORROW_RESERVATION_CONFLICT, lint_root, DUMMY_SP, ""); diag.message = initial_diag.styled_message().clone(); diag.span = initial_diag.span.clone();