Generalise more cases of explicit iteration of specific kinds

This commit is contained in:
varkor
2018-04-13 23:12:14 +01:00
parent 4a6c946368
commit b75f421ee9
23 changed files with 110 additions and 71 deletions

View File

@@ -27,7 +27,7 @@ use rustc::hir::intravisit::{self, Visitor, NestedVisitorMap};
use rustc::hir::itemlikevisit::DeepVisitor;
use rustc::lint;
use rustc::middle::privacy::{AccessLevel, AccessLevels};
use rustc::ty::{self, TyCtxt, Ty, TypeFoldable};
use rustc::ty::{self, TyCtxt, Ty, TypeFoldable, GenericParamDef};
use rustc::ty::fold::TypeVisitor;
use rustc::ty::maps::Providers;
use rustc::ty::subst::UnpackedKind;
@@ -399,9 +399,14 @@ impl<'a, 'tcx> Visitor<'tcx> for EmbargoVisitor<'a, 'tcx> {
impl<'b, 'a, 'tcx> ReachEverythingInTheInterfaceVisitor<'b, 'a, 'tcx> {
fn generics(&mut self) -> &mut Self {
for def in self.ev.tcx.generics_of(self.item_def_id).types() {
if def.has_default {
self.ev.tcx.type_of(def.def_id).visit_with(self);
for def in self.ev.tcx.generics_of(self.item_def_id).params.iter() {
match def {
GenericParamDef::Type(ty) => {
if ty.has_default {
self.ev.tcx.type_of(ty.def_id).visit_with(self);
}
}
GenericParamDef::Lifetime(_) => {}
}
}
self
@@ -1335,9 +1340,14 @@ struct SearchInterfaceForPrivateItemsVisitor<'a, 'tcx: 'a> {
impl<'a, 'tcx: 'a> SearchInterfaceForPrivateItemsVisitor<'a, 'tcx> {
fn generics(&mut self) -> &mut Self {
for def in self.tcx.generics_of(self.item_def_id).types() {
if def.has_default {
self.tcx.type_of(def.def_id).visit_with(self);
for def in self.tcx.generics_of(self.item_def_id).params.iter() {
match def {
GenericParamDef::Type(ty) => {
if ty.has_default {
self.tcx.type_of(ty.def_id).visit_with(self);
}
}
GenericParamDef::Lifetime(_) => {}
}
}
self