1
Fork 0

Simplify rustc_hir::intravisit::Visitor::visit_variant_data.

It has four arguments that are never used. This avoids lots of argument
passing in functions that feed into `visit_variant_data`.
This commit is contained in:
Nicholas Nethercote 2022-08-10 11:22:01 +10:00
parent f03ce30962
commit 8c5303898e
11 changed files with 32 additions and 116 deletions

View file

@ -295,14 +295,14 @@ impl<'a, 'hir> Visitor<'hir> for NodeCollector<'a, 'hir> {
self.insert(lifetime.span, lifetime.hir_id, Node::Lifetime(lifetime)); self.insert(lifetime.span, lifetime.hir_id, Node::Lifetime(lifetime));
} }
fn visit_variant(&mut self, v: &'hir Variant<'hir>, g: &'hir Generics<'hir>, item_id: HirId) { fn visit_variant(&mut self, v: &'hir Variant<'hir>) {
self.insert(v.span, v.id, Node::Variant(v)); self.insert(v.span, v.id, Node::Variant(v));
self.with_parent(v.id, |this| { self.with_parent(v.id, |this| {
// Register the constructor of this variant. // Register the constructor of this variant.
if let Some(ctor_hir_id) = v.data.ctor_hir_id() { if let Some(ctor_hir_id) = v.data.ctor_hir_id() {
this.insert(v.span, ctor_hir_id, Node::Ctor(&v.data)); this.insert(v.span, ctor_hir_id, Node::Ctor(&v.data));
} }
intravisit::walk_variant(this, v, g, item_id); intravisit::walk_variant(this, v);
}); });
} }

View file

@ -385,30 +385,17 @@ pub trait Visitor<'v>: Sized {
fn visit_poly_trait_ref(&mut self, t: &'v PolyTraitRef<'v>, m: TraitBoundModifier) { fn visit_poly_trait_ref(&mut self, t: &'v PolyTraitRef<'v>, m: TraitBoundModifier) {
walk_poly_trait_ref(self, t, m) walk_poly_trait_ref(self, t, m)
} }
fn visit_variant_data( fn visit_variant_data(&mut self, s: &'v VariantData<'v>) {
&mut self,
s: &'v VariantData<'v>,
_: Symbol,
_: &'v Generics<'v>,
_parent_id: HirId,
_: Span,
) {
walk_struct_def(self, s) walk_struct_def(self, s)
} }
fn visit_field_def(&mut self, s: &'v FieldDef<'v>) { fn visit_field_def(&mut self, s: &'v FieldDef<'v>) {
walk_field_def(self, s) walk_field_def(self, s)
} }
fn visit_enum_def( fn visit_enum_def(&mut self, enum_definition: &'v EnumDef<'v>, item_id: HirId, _: Span) {
&mut self, walk_enum_def(self, enum_definition, item_id)
enum_definition: &'v EnumDef<'v>,
generics: &'v Generics<'v>,
item_id: HirId,
_: Span,
) {
walk_enum_def(self, enum_definition, generics, item_id)
} }
fn visit_variant(&mut self, v: &'v Variant<'v>, g: &'v Generics<'v>, item_id: HirId) { fn visit_variant(&mut self, v: &'v Variant<'v>) {
walk_variant(self, v, g, item_id) walk_variant(self, v)
} }
fn visit_label(&mut self, label: &'v Label) { fn visit_label(&mut self, label: &'v Label) {
walk_label(self, label) walk_label(self, label)
@ -572,7 +559,7 @@ pub fn walk_item<'v, V: Visitor<'v>>(visitor: &mut V, item: &'v Item<'v>) {
ItemKind::Enum(ref enum_definition, ref generics) => { ItemKind::Enum(ref enum_definition, ref generics) => {
visitor.visit_generics(generics); visitor.visit_generics(generics);
// `visit_enum_def()` takes care of visiting the `Item`'s `HirId`. // `visit_enum_def()` takes care of visiting the `Item`'s `HirId`.
visitor.visit_enum_def(enum_definition, generics, item.hir_id(), item.span) visitor.visit_enum_def(enum_definition, item.hir_id(), item.span)
} }
ItemKind::Impl(Impl { ItemKind::Impl(Impl {
unsafety: _, unsafety: _,
@ -595,13 +582,7 @@ pub fn walk_item<'v, V: Visitor<'v>>(visitor: &mut V, item: &'v Item<'v>) {
| ItemKind::Union(ref struct_definition, ref generics) => { | ItemKind::Union(ref struct_definition, ref generics) => {
visitor.visit_generics(generics); visitor.visit_generics(generics);
visitor.visit_id(item.hir_id()); visitor.visit_id(item.hir_id());
visitor.visit_variant_data( visitor.visit_variant_data(struct_definition);
struct_definition,
item.ident.name,
generics,
item.hir_id(),
item.span,
);
} }
ItemKind::Trait(.., ref generics, bounds, trait_item_refs) => { ItemKind::Trait(.., ref generics, bounds, trait_item_refs) => {
visitor.visit_id(item.hir_id()); visitor.visit_id(item.hir_id());
@ -649,28 +630,16 @@ pub fn walk_use<'v, V: Visitor<'v>>(visitor: &mut V, path: &'v Path<'v>, hir_id:
pub fn walk_enum_def<'v, V: Visitor<'v>>( pub fn walk_enum_def<'v, V: Visitor<'v>>(
visitor: &mut V, visitor: &mut V,
enum_definition: &'v EnumDef<'v>, enum_definition: &'v EnumDef<'v>,
generics: &'v Generics<'v>,
item_id: HirId, item_id: HirId,
) { ) {
visitor.visit_id(item_id); visitor.visit_id(item_id);
walk_list!(visitor, visit_variant, enum_definition.variants, generics, item_id); walk_list!(visitor, visit_variant, enum_definition.variants);
} }
pub fn walk_variant<'v, V: Visitor<'v>>( pub fn walk_variant<'v, V: Visitor<'v>>(visitor: &mut V, variant: &'v Variant<'v>) {
visitor: &mut V,
variant: &'v Variant<'v>,
generics: &'v Generics<'v>,
parent_item_id: HirId,
) {
visitor.visit_ident(variant.ident); visitor.visit_ident(variant.ident);
visitor.visit_id(variant.id); visitor.visit_id(variant.id);
visitor.visit_variant_data( visitor.visit_variant_data(&variant.data);
&variant.data,
variant.ident.name,
generics,
parent_item_id,
variant.span,
);
walk_list!(visitor, visit_anon_const, &variant.disr_expr); walk_list!(visitor, visit_anon_const, &variant.disr_expr);
} }

View file

@ -24,7 +24,6 @@ use rustc_hir::intravisit::Visitor;
use rustc_middle::hir::nested_filter; use rustc_middle::hir::nested_filter;
use rustc_middle::ty::{self, TyCtxt}; use rustc_middle::ty::{self, TyCtxt};
use rustc_session::lint::LintPass; use rustc_session::lint::LintPass;
use rustc_span::symbol::Symbol;
use rustc_span::Span; use rustc_span::Span;
use std::any::Any; use std::any::Any;
@ -194,14 +193,7 @@ impl<'tcx, T: LateLintPass<'tcx>> hir_visit::Visitor<'tcx> for LateContextAndPas
self.context.cached_typeck_results.set(old_cached_typeck_results); self.context.cached_typeck_results.set(old_cached_typeck_results);
} }
fn visit_variant_data( fn visit_variant_data(&mut self, s: &'tcx hir::VariantData<'tcx>) {
&mut self,
s: &'tcx hir::VariantData<'tcx>,
_: Symbol,
_: &'tcx hir::Generics<'tcx>,
_: hir::HirId,
_: Span,
) {
lint_callback!(self, check_struct_def, s); lint_callback!(self, check_struct_def, s);
hir_visit::walk_struct_def(self, s); hir_visit::walk_struct_def(self, s);
} }
@ -213,15 +205,10 @@ impl<'tcx, T: LateLintPass<'tcx>> hir_visit::Visitor<'tcx> for LateContextAndPas
}) })
} }
fn visit_variant( fn visit_variant(&mut self, v: &'tcx hir::Variant<'tcx>) {
&mut self,
v: &'tcx hir::Variant<'tcx>,
g: &'tcx hir::Generics<'tcx>,
item_id: hir::HirId,
) {
self.with_lint_attrs(v.id, |cx| { self.with_lint_attrs(v.id, |cx| {
lint_callback!(cx, check_variant, v); lint_callback!(cx, check_variant, v);
hir_visit::walk_variant(cx, v, g, item_id); hir_visit::walk_variant(cx, v);
}) })
} }

View file

@ -772,14 +772,9 @@ impl<'tcx> intravisit::Visitor<'tcx> for LintLevelMapBuilder<'tcx> {
}) })
} }
fn visit_variant( fn visit_variant(&mut self, v: &'tcx hir::Variant<'tcx>) {
&mut self,
v: &'tcx hir::Variant<'tcx>,
g: &'tcx hir::Generics<'tcx>,
item_id: hir::HirId,
) {
self.with_lint_attrs(v.id, |builder| { self.with_lint_attrs(v.id, |builder| {
intravisit::walk_variant(builder, v, g, item_id); intravisit::walk_variant(builder, v);
}) })
} }

View file

@ -29,7 +29,6 @@ use rustc_middle::mir::visit::Visitor as _;
use rustc_middle::mir::{traversal, Body, ConstQualifs, MirPass, MirPhase, Promoted}; use rustc_middle::mir::{traversal, Body, ConstQualifs, MirPass, MirPhase, Promoted};
use rustc_middle::ty::query::Providers; use rustc_middle::ty::query::Providers;
use rustc_middle::ty::{self, TyCtxt, TypeVisitable}; use rustc_middle::ty::{self, TyCtxt, TypeVisitable};
use rustc_span::{Span, Symbol};
#[macro_use] #[macro_use]
mod pass_manager; mod pass_manager;
@ -159,14 +158,7 @@ fn mir_keys(tcx: TyCtxt<'_>, (): ()) -> FxIndexSet<LocalDefId> {
set: &'a mut FxIndexSet<LocalDefId>, set: &'a mut FxIndexSet<LocalDefId>,
} }
impl<'tcx> Visitor<'tcx> for GatherCtors<'_, 'tcx> { impl<'tcx> Visitor<'tcx> for GatherCtors<'_, 'tcx> {
fn visit_variant_data( fn visit_variant_data(&mut self, v: &'tcx hir::VariantData<'tcx>) {
&mut self,
v: &'tcx hir::VariantData<'tcx>,
_: Symbol,
_: &'tcx hir::Generics<'tcx>,
_: hir::HirId,
_: Span,
) {
if let hir::VariantData::Tuple(_, hir_id) = *v { if let hir::VariantData::Tuple(_, hir_id) = *v {
self.set.insert(self.tcx.hir().local_def_id(hir_id)); self.set.insert(self.tcx.hir().local_def_id(hir_id));
} }

View file

@ -2066,14 +2066,9 @@ impl<'tcx> Visitor<'tcx> for CheckAttrVisitor<'tcx> {
intravisit::walk_expr(self, expr) intravisit::walk_expr(self, expr)
} }
fn visit_variant( fn visit_variant(&mut self, variant: &'tcx hir::Variant<'tcx>) {
&mut self,
variant: &'tcx hir::Variant<'tcx>,
generics: &'tcx hir::Generics<'tcx>,
item_id: HirId,
) {
self.check_attributes(variant.id, variant.span, Target::Variant, None); self.check_attributes(variant.id, variant.span, Target::Variant, None);
intravisit::walk_variant(self, variant, generics, item_id) intravisit::walk_variant(self, variant)
} }
fn visit_param(&mut self, param: &'tcx hir::Param<'tcx>) { fn visit_param(&mut self, param: &'tcx hir::Param<'tcx>) {

View file

@ -368,14 +368,7 @@ impl<'tcx> Visitor<'tcx> for MarkSymbolVisitor<'tcx> {
self.maybe_typeck_results = old_maybe_typeck_results; self.maybe_typeck_results = old_maybe_typeck_results;
} }
fn visit_variant_data( fn visit_variant_data(&mut self, def: &'tcx hir::VariantData<'tcx>) {
&mut self,
def: &'tcx hir::VariantData<'tcx>,
_: Symbol,
_: &hir::Generics<'_>,
_: hir::HirId,
_: rustc_span::Span,
) {
let tcx = self.tcx; let tcx = self.tcx;
let has_repr_c = self.repr_has_repr_c; let has_repr_c = self.repr_has_repr_c;
let has_repr_simd = self.repr_has_repr_simd; let has_repr_simd = self.repr_has_repr_simd;

View file

@ -203,14 +203,9 @@ impl<'v> hir_visit::Visitor<'v> for StatCollector<'v> {
hir_visit::walk_field_def(self, s) hir_visit::walk_field_def(self, s)
} }
fn visit_variant( fn visit_variant(&mut self, v: &'v hir::Variant<'v>) {
&mut self,
v: &'v hir::Variant<'v>,
g: &'v hir::Generics<'v>,
item_id: hir::HirId,
) {
self.record("Variant", Id::None, v); self.record("Variant", Id::None, v);
hir_visit::walk_variant(self, v, g, item_id) hir_visit::walk_variant(self, v)
} }
fn visit_lifetime(&mut self, lifetime: &'v hir::Lifetime) { fn visit_lifetime(&mut self, lifetime: &'v hir::Lifetime) {

View file

@ -10,7 +10,7 @@ use rustc_hir::def::{DefKind, Res};
use rustc_hir::def_id::{LocalDefId, CRATE_DEF_ID}; use rustc_hir::def_id::{LocalDefId, CRATE_DEF_ID};
use rustc_hir::hir_id::CRATE_HIR_ID; use rustc_hir::hir_id::CRATE_HIR_ID;
use rustc_hir::intravisit::{self, Visitor}; use rustc_hir::intravisit::{self, Visitor};
use rustc_hir::{FieldDef, Generics, HirId, Item, ItemKind, TraitRef, Ty, TyKind, Variant}; use rustc_hir::{FieldDef, Item, ItemKind, TraitRef, Ty, TyKind, Variant};
use rustc_middle::hir::nested_filter; use rustc_middle::hir::nested_filter;
use rustc_middle::middle::privacy::AccessLevels; use rustc_middle::middle::privacy::AccessLevels;
use rustc_middle::middle::stability::{AllowUnstable, DeprecationEntry, Index}; use rustc_middle::middle::stability::{AllowUnstable, DeprecationEntry, Index};
@ -434,7 +434,7 @@ impl<'a, 'tcx> Visitor<'tcx> for Annotator<'a, 'tcx> {
); );
} }
fn visit_variant(&mut self, var: &'tcx Variant<'tcx>, g: &'tcx Generics<'tcx>, item_id: HirId) { fn visit_variant(&mut self, var: &'tcx Variant<'tcx>) {
self.annotate( self.annotate(
self.tcx.hir().local_def_id(var.id), self.tcx.hir().local_def_id(var.id),
var.span, var.span,
@ -457,7 +457,7 @@ impl<'a, 'tcx> Visitor<'tcx> for Annotator<'a, 'tcx> {
); );
} }
intravisit::walk_variant(v, var, g, item_id) intravisit::walk_variant(v, var)
}, },
) )
} }
@ -590,9 +590,9 @@ impl<'tcx> Visitor<'tcx> for MissingStabilityAnnotations<'tcx> {
intravisit::walk_impl_item(self, ii); intravisit::walk_impl_item(self, ii);
} }
fn visit_variant(&mut self, var: &'tcx Variant<'tcx>, g: &'tcx Generics<'tcx>, item_id: HirId) { fn visit_variant(&mut self, var: &'tcx Variant<'tcx>) {
self.check_missing_stability(self.tcx.hir().local_def_id(var.id), var.span); self.check_missing_stability(self.tcx.hir().local_def_id(var.id), var.span);
intravisit::walk_variant(self, var, g, item_id); intravisit::walk_variant(self, var);
} }
fn visit_field_def(&mut self, s: &'tcx FieldDef<'tcx>) { fn visit_field_def(&mut self, s: &'tcx FieldDef<'tcx>) {

View file

@ -1625,15 +1625,10 @@ impl<'a, 'tcx> Visitor<'tcx> for ObsoleteVisiblePrivateTypesVisitor<'a, 'tcx> {
intravisit::walk_ty(self, t) intravisit::walk_ty(self, t)
} }
fn visit_variant( fn visit_variant(&mut self, v: &'tcx hir::Variant<'tcx>) {
&mut self,
v: &'tcx hir::Variant<'tcx>,
g: &'tcx hir::Generics<'tcx>,
item_id: hir::HirId,
) {
if self.access_levels.is_reachable(self.tcx.hir().local_def_id(v.id)) { if self.access_levels.is_reachable(self.tcx.hir().local_def_id(v.id)) {
self.in_variant = true; self.in_variant = true;
intravisit::walk_variant(self, v, g, item_id); intravisit::walk_variant(self, v);
self.in_variant = false; self.in_variant = false;
} }
} }

View file

@ -1289,14 +1289,9 @@ impl<'a, 'hir, 'tcx> intravisit::Visitor<'hir> for HirCollector<'a, 'hir, 'tcx>
}); });
} }
fn visit_variant( fn visit_variant(&mut self, v: &'hir hir::Variant<'_>) {
&mut self,
v: &'hir hir::Variant<'_>,
g: &'hir hir::Generics<'_>,
item_id: hir::HirId,
) {
self.visit_testable(v.ident.to_string(), v.id, v.span, |this| { self.visit_testable(v.ident.to_string(), v.id, v.span, |this| {
intravisit::walk_variant(this, v, g, item_id); intravisit::walk_variant(this, v);
}); });
} }