do not skip renumbering the place in place-type-ascriptions
This commit is contained in:
parent
71fed065f7
commit
a609384561
2 changed files with 12 additions and 17 deletions
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue