//! - Example: Examine each expression to look for its type and do some check or other.
//! - How: Implement `intravisit::Visitor` and override the `NestedFilter` type to
//! `nested_filter::OnlyBodies` (and implement `nested_visit_map`), and use
-//! `tcx.hir().deep_visit_all_item_likes(&mut visitor)`. Within your
+//! `tcx.hir().visit_all_item_likes_in_crate(&mut visitor)`. Within your
//! `intravisit::Visitor` impl, implement methods like `visit_expr()` (don't forget to invoke
//! `intravisit::walk_expr()` to keep walking the subparts).
//! - Pro: Visitor methods for any kind of HIR node, not just item-like things.
//! example generator inference, and possibly also HIR borrowck.
use crate::hir::*;
-use crate::itemlikevisit::ParItemLikeVisitor;
use rustc_ast::walk_list;
use rustc_ast::{Attribute, Label};
use rustc_span::symbol::{Ident, Symbol};
fn into_visitor(&self) -> Self::Visitor;
}
-pub struct ParDeepVisitor<V>(pub V);
-
-impl<'hir, V> ParItemLikeVisitor<'hir> for ParDeepVisitor<V>
-where
- V: IntoVisitor<'hir>,
-{
- fn visit_item(&self, item: &'hir Item<'hir>) {
- self.0.into_visitor().visit_item(item);
- }
-
- fn visit_trait_item(&self, trait_item: &'hir TraitItem<'hir>) {
- self.0.into_visitor().visit_trait_item(trait_item);
- }
-
- fn visit_impl_item(&self, impl_item: &'hir ImplItem<'hir>) {
- self.0.into_visitor().visit_impl_item(impl_item);
- }
-
- fn visit_foreign_item(&self, foreign_item: &'hir ForeignItem<'hir>) {
- self.0.into_visitor().visit_foreign_item(foreign_item);
- }
-}
-
#[derive(Copy, Clone, Debug)]
pub enum FnKind<'a> {
/// `#[xxx] pub async/const/extern "Abi" fn foo()`
/// (this is why the module is called `intravisit`, to distinguish it
/// from the AST's `visit` module, which acts differently). If you
/// simply want to visit all items in the crate in some order, you
-/// should call `Crate::visit_all_items`. Otherwise, see the comment
+/// should call `tcx.hir().visit_all_item_likes_in_crate`. Otherwise, see the comment
/// on `visit_nested_item` for details on how to visit nested items.
///
/// If you want to ensure that your code handles every variant