use middle::const_val::ConstVal;
use hir::def_id::DefId;
use ty::subst::Substs;
-use ty::{ClosureSubsts, Region, Ty};
+use ty::{ClosureSubsts, Region, Ty, GeneratorInterior};
use mir::*;
use rustc_const_math::ConstUsize;
use syntax_pos::Span;
self.super_closure_substs(substs);
}
+ fn visit_generator_interior(&mut self,
+ interior: & $($mutability)* GeneratorInterior<'tcx>,
+ _: Location) {
+ self.super_generator_interior(interior);
+ }
+
fn visit_const_val(&mut self,
const_val: & $($mutability)* ConstVal,
_: Location) {
self.super_local_decl(local_decl);
}
+ fn visit_local(&mut self,
+ _local: & $($mutability)* Local) {
+ }
+
fn visit_visibility_scope(&mut self,
scope: & $($mutability)* VisibilityScope) {
self.super_visibility_scope(scope);
TerminatorKind::Resume |
TerminatorKind::Return |
+ TerminatorKind::GeneratorDrop |
TerminatorKind::Unreachable => {
}
self.visit_branch(block, target);
cleanup.map(|t| self.visit_branch(block, t));
}
+
+ TerminatorKind::Yield { ref $($mutability)* value,
+ resume,
+ drop } => {
+ self.visit_operand(value, source_location);
+ self.visit_branch(block, resume);
+ drop.map(|t| self.visit_branch(block, t));
+ }
+
}
}
self.visit_operand(len, location);
self.visit_operand(index, location);
}
- AssertMessage::Math(_) => {}
+ AssertMessage::Math(_) => {},
+ AssertMessage::GeneratorResumedAfterReturn => {},
+ AssertMessage::GeneratorResumedAfterPanic => {},
}
}
self.visit_def_id(def_id, location);
self.visit_closure_substs(closure_substs, location);
}
+ AggregateKind::Generator(ref $($mutability)* def_id,
+ ref $($mutability)* closure_substs,
+ ref $($mutability)* interior) => {
+ self.visit_def_id(def_id, location);
+ self.visit_closure_substs(closure_substs, location);
+ self.visit_generator_interior(interior, location);
+ }
}
for operand in operands {
context: LvalueContext<'tcx>,
location: Location) {
match *lvalue {
- Lvalue::Local(_) => {
+ Lvalue::Local(ref $($mutability)* local) => {
+ self.visit_local(local);
}
Lvalue::Static(ref $($mutability)* static_) => {
self.visit_static(static_, context, location);
ref $($mutability)* ty,
name: _,
ref $($mutability)* source_info,
+ internal: _,
is_user_variable: _,
} = *local_decl;
fn super_substs(&mut self, _substs: & $($mutability)* &'tcx Substs<'tcx>) {
}
+ fn super_generator_interior(&mut self,
+ _interior: & $($mutability)* GeneratorInterior<'tcx>) {
+ }
+
fn super_closure_substs(&mut self,
_substs: & $($mutability)* ClosureSubsts<'tcx>) {
}