@@ -23,7 +23,7 @@ use rustc_errors::{Diagnostic, DiagnosticBuilder, DiagnosticMessage, Subdiagnost
2323use rustc_fluent_macro:: fluent_messages;
2424use rustc_hir as hir;
2525use rustc_hir:: def_id:: LocalDefId ;
26- use rustc_index:: bit_set:: ChunkedBitSet ;
26+ use rustc_index:: bit_set:: { BitSet , ChunkedBitSet } ;
2727use rustc_index:: { IndexSlice , IndexVec } ;
2828use rustc_infer:: infer:: {
2929 DefiningAnchor , InferCtxt , NllRegionVariableOrigin , RegionVariableOrigin , TyCtxtInferExt ,
@@ -41,7 +41,6 @@ use rustc_session::lint::builtin::UNUSED_MUT;
4141use rustc_span:: { Span , Symbol } ;
4242use rustc_target:: abi:: FieldIdx ;
4343
44- use either:: Either ;
4544use smallvec:: SmallVec ;
4645use std:: cell:: OnceCell ;
4746use std:: cell:: RefCell ;
@@ -1049,12 +1048,16 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
10491048 let borrow_set = self . borrow_set . clone ( ) ;
10501049
10511050 // Use polonius output if it has been enabled.
1052- let polonius_output = self . polonius_output . clone ( ) ;
1053- let borrows_in_scope = if let Some ( polonius) = & polonius_output {
1051+ let mut polonius_output;
1052+ let borrows_in_scope = if let Some ( polonius) = & self . polonius_output {
10541053 let location = self . location_table . start_index ( location) ;
1055- Either :: Left ( polonius. errors_at ( location) . iter ( ) . copied ( ) )
1054+ polonius_output = BitSet :: new_empty ( borrow_set. len ( ) ) ;
1055+ for & idx in polonius. errors_at ( location) {
1056+ polonius_output. insert ( idx) ;
1057+ }
1058+ & polonius_output
10561059 } else {
1057- Either :: Right ( flow_state. borrows . iter ( ) )
1060+ & flow_state. borrows
10581061 } ;
10591062
10601063 each_borrow_involving_path (
@@ -1064,7 +1067,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
10641067 location,
10651068 ( sd, place_span. 0 ) ,
10661069 & borrow_set,
1067- borrows_in_scope,
1070+ |borrow_index| borrows_in_scope. contains ( borrow_index ) ,
10681071 |this, borrow_index, borrow| match ( rw, borrow. kind ) {
10691072 // Obviously an activation is compatible with its own
10701073 // reservation (or even prior activating uses of same
0 commit comments