diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2018-10-08 18:03:43 -0400 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2018-10-08 19:20:37 -0400 |
| commit | a609384561944c24b076dcecbcd84adb0243c0fb (patch) | |
| tree | 34b33e30783b7b5ce5de2f0934d5651368cebaa0 | |
| parent | 71fed065f7006f4102ac8130896a407aabb5de82 (diff) | |
| download | rust-a609384561944c24b076dcecbcd84adb0243c0fb.tar.gz rust-a609384561944c24b076dcecbcd84adb0243c0fb.zip | |
do not skip renumbering the place in place-type-ascriptions
| -rw-r--r-- | src/librustc/mir/visit.rs | 6 | ||||
| -rw-r--r-- | src/librustc_mir/borrow_check/nll/renumber.rs | 23 |
2 files changed, 12 insertions, 17 deletions
diff --git a/src/librustc/mir/visit.rs b/src/librustc/mir/visit.rs index 7d8227053b3..d2b0a6a37a7 100644 --- a/src/librustc/mir/visit.rs +++ b/src/librustc/mir/visit.rs @@ -214,7 +214,7 @@ macro_rules! make_mir_visitor { self.super_ty(ty); } - fn visit_canonical_ty(&mut self, ty: & $($mutability)* CanonicalTy<'tcx>) { + fn visit_user_ty(&mut self, ty: & $($mutability)* CanonicalTy<'tcx>) { self.super_canonical_ty(ty); } @@ -640,7 +640,7 @@ macro_rules! make_mir_visitor { c_ty: & $($mutability)* CanonicalTy<'tcx>, location: Location) { self.visit_place(place, PlaceContext::Validate, location); - self.visit_canonical_ty(c_ty); + self.visit_user_ty(c_ty); } fn super_place(&mut self, @@ -736,7 +736,7 @@ macro_rules! make_mir_visitor { source_info: *source_info, }); if let Some(user_ty) = user_ty { - self.visit_canonical_ty(user_ty); + self.visit_user_ty(user_ty); } self.visit_source_info(source_info); self.visit_source_scope(visibility_scope); diff --git a/src/librustc_mir/borrow_check/nll/renumber.rs b/src/librustc_mir/borrow_check/nll/renumber.rs index d77863d598f..15a60badc93 100644 --- a/src/librustc_mir/borrow_check/nll/renumber.rs +++ b/src/librustc_mir/borrow_check/nll/renumber.rs @@ -10,7 +10,7 @@ use rustc::ty::subst::Substs; use rustc::ty::{self, CanonicalTy, ClosureSubsts, GeneratorSubsts, Ty, TypeFoldable}; -use rustc::mir::{BasicBlock, Location, Mir, Place, Statement, StatementKind}; +use rustc::mir::{BasicBlock, Location, Mir, Statement, StatementKind}; use rustc::mir::visit::{MutVisitor, TyContext}; use rustc::infer::{InferCtxt, NLLRegionVariableOrigin}; @@ -65,6 +65,14 @@ impl<'a, 'gcx, 'tcx> MutVisitor<'tcx> for NLLVisitor<'a, 'gcx, 'tcx> { debug!("visit_ty: ty={:?}", ty); } + fn visit_user_ty(&mut self, _ty: &mut CanonicalTy<'tcx>) { + // `user_ty` annotations represent the types that the user + // wrote in the progarm. We don't want to erase the regions + // from these types: rather, we want to add them as + // constraints at type-check time. + debug!("visit_user_ty: skipping renumber"); + } + fn visit_substs(&mut self, substs: &mut &'tcx Substs<'tcx>, location: Location) { debug!("visit_substs(substs={:?}, location={:?})", substs, location); @@ -112,19 +120,6 @@ impl<'a, 'gcx, 'tcx> MutVisitor<'tcx> for NLLVisitor<'a, 'gcx, 'tcx> { debug!("visit_closure_substs: substs={:?}", substs); } - fn visit_ascribe_user_ty( - &mut self, - _place: &mut Place<'tcx>, - _variance: &mut ty::Variance, - _c_ty: &mut CanonicalTy<'tcx>, - _location: Location, - ) { - // User-assert-ty statements represent types that the user added explicitly. - // We don't want to erase the regions from these types: rather, we want to - // add them as constraints at type-check time. - debug!("visit_user_assert_ty: skipping renumber"); - } - fn visit_statement( &mut self, block: BasicBlock, |
