summaryrefslogtreecommitdiffstats
path: root/compiler/rustc_borrowck/src/diagnostics/find_use.rs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/rustc_borrowck/src/diagnostics/find_use.rs')
-rw-r--r--compiler/rustc_borrowck/src/diagnostics/find_use.rs14
1 files changed, 8 insertions, 6 deletions
diff --git a/compiler/rustc_borrowck/src/diagnostics/find_use.rs b/compiler/rustc_borrowck/src/diagnostics/find_use.rs
index 15f42e26c..2495613fe 100644
--- a/compiler/rustc_borrowck/src/diagnostics/find_use.rs
+++ b/compiler/rustc_borrowck/src/diagnostics/find_use.rs
@@ -6,12 +6,11 @@ use std::rc::Rc;
use crate::{
def_use::{self, DefUse},
- nll::ToRegionVid,
region_infer::{Cause, RegionInferenceContext},
};
-use rustc_data_structures::fx::FxHashSet;
+use rustc_data_structures::fx::FxIndexSet;
use rustc_middle::mir::visit::{MirVisitable, PlaceContext, Visitor};
-use rustc_middle::mir::{Body, Local, Location};
+use rustc_middle::mir::{self, Body, Local, Location};
use rustc_middle::ty::{RegionVid, TyCtxt};
pub(crate) fn find<'tcx>(
@@ -37,7 +36,7 @@ struct UseFinder<'cx, 'tcx> {
impl<'cx, 'tcx> UseFinder<'cx, 'tcx> {
fn find(&mut self) -> Option<Cause> {
let mut queue = VecDeque::new();
- let mut visited = FxHashSet::default();
+ let mut visited = FxIndexSet::default();
queue.push_back(self.start_point);
while let Some(p) = queue.pop_front() {
@@ -70,7 +69,10 @@ impl<'cx, 'tcx> UseFinder<'cx, 'tcx> {
block_data
.terminator()
.successors()
- .filter(|&bb| Some(&Some(bb)) != block_data.terminator().unwind())
+ .filter(|&bb| {
+ Some(&mir::UnwindAction::Cleanup(bb))
+ != block_data.terminator().unwind()
+ })
.map(|bb| Location { statement_index: 0, block: bb }),
);
}
@@ -114,7 +116,7 @@ impl<'cx, 'tcx> Visitor<'tcx> for DefUseVisitor<'cx, 'tcx> {
let mut found_it = false;
self.tcx.for_each_free_region(&local_ty, |r| {
- if r.to_region_vid() == self.region_vid {
+ if r.as_var() == self.region_vid {
found_it = true;
}
});