Skip to content

Commit e8f6fbb

Browse files
committed
allow dep-graph assertions on fields
1 parent 3819ccd commit e8f6fbb

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

src/librustc_incremental/assert_dep_graph.rs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ use rustc::ty::TyCtxt;
5151
use rustc_data_structures::fx::FxHashSet;
5252
use rustc_data_structures::graph::{Direction, INCOMING, OUTGOING, NodeIndex};
5353
use rustc::hir;
54-
use rustc::hir::itemlikevisit::ItemLikeVisitor;
54+
use rustc::hir::intravisit::{self, NestedVisitorMap, Visitor};
5555
use rustc::ich::{ATTR_IF_THIS_CHANGED, ATTR_THEN_THIS_WOULD_NEED};
5656
use graphviz::IntoCow;
5757
use std::env;
@@ -80,7 +80,7 @@ pub fn assert_dep_graph<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>) {
8080
if_this_changed: vec![],
8181
then_this_would_need: vec![] };
8282
visitor.process_attrs(ast::CRATE_NODE_ID, &tcx.hir.krate().attrs);
83-
tcx.hir.krate().visit_all_item_likes(&mut visitor);
83+
tcx.hir.krate().visit_all_item_likes(&mut visitor.as_deep_visitor());
8484
(visitor.if_this_changed, visitor.then_this_would_need)
8585
};
8686

@@ -166,17 +166,29 @@ impl<'a, 'tcx> IfThisChanged<'a, 'tcx> {
166166
}
167167
}
168168

169-
impl<'a, 'tcx> ItemLikeVisitor<'tcx> for IfThisChanged<'a, 'tcx> {
169+
impl<'a, 'tcx> Visitor<'tcx> for IfThisChanged<'a, 'tcx> {
170+
fn nested_visit_map<'this>(&'this mut self) -> NestedVisitorMap<'this, 'tcx> {
171+
NestedVisitorMap::OnlyBodies(&self.tcx.hir)
172+
}
173+
170174
fn visit_item(&mut self, item: &'tcx hir::Item) {
171175
self.process_attrs(item.id, &item.attrs);
176+
intravisit::walk_item(self, item);
172177
}
173178

174179
fn visit_trait_item(&mut self, trait_item: &'tcx hir::TraitItem) {
175180
self.process_attrs(trait_item.id, &trait_item.attrs);
181+
intravisit::walk_trait_item(self, trait_item);
176182
}
177183

178184
fn visit_impl_item(&mut self, impl_item: &'tcx hir::ImplItem) {
179185
self.process_attrs(impl_item.id, &impl_item.attrs);
186+
intravisit::walk_impl_item(self, impl_item);
187+
}
188+
189+
fn visit_struct_field(&mut self, s: &'tcx hir::StructField) {
190+
self.process_attrs(s.id, &s.attrs);
191+
intravisit::walk_struct_field(self, s);
180192
}
181193
}
182194

0 commit comments

Comments
 (0)