Skip to content

Commit fa282f4

Browse files
committed
Remove CollectItemTypesVisitor
1 parent c83bd8b commit fa282f4

File tree

2 files changed

+9
-40
lines changed

2 files changed

+9
-40
lines changed

compiler/rustc_hir_analysis/src/check/wfcheck.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ use tracing::{debug, instrument};
4040
use {rustc_ast as ast, rustc_hir as hir};
4141

4242
use crate::autoderef::Autoderef;
43-
use crate::collect::CollectItemTypesVisitor;
4443
use crate::constrained_generic_params::{Parameter, identify_constrained_generic_params};
4544
use crate::errors::InvalidReceiverTyHint;
4645
use crate::{errors, fluent_generated as fluent};
@@ -231,7 +230,8 @@ fn check_item<'tcx>(tcx: TyCtxt<'tcx>, item: &'tcx hir::Item<'tcx>) -> Result<()
231230
?item.owner_id,
232231
item.name = ? tcx.def_path_str(def_id)
233232
);
234-
CollectItemTypesVisitor { tcx }.visit_item(item);
233+
crate::collect::lower_item(tcx, item.item_id());
234+
crate::collect::reject_placeholder_type_signatures_in_item(tcx, item);
235235

236236
let res = match item.kind {
237237
// Right now we check that every default trait implementation
@@ -352,8 +352,6 @@ fn check_foreign_item<'tcx>(
352352
) -> Result<(), ErrorGuaranteed> {
353353
let def_id = item.owner_id.def_id;
354354

355-
CollectItemTypesVisitor { tcx }.visit_foreign_item(item);
356-
357355
debug!(
358356
?item.owner_id,
359357
item.name = ? tcx.def_path_str(def_id)
@@ -376,7 +374,7 @@ fn check_trait_item<'tcx>(
376374
) -> Result<(), ErrorGuaranteed> {
377375
let def_id = trait_item.owner_id.def_id;
378376

379-
CollectItemTypesVisitor { tcx }.visit_trait_item(trait_item);
377+
crate::collect::lower_trait_item(tcx, trait_item.trait_item_id());
380378

381379
let (method_sig, span) = match trait_item.kind {
382380
hir::TraitItemKind::Fn(ref sig, _) => (Some(sig), trait_item.span),
@@ -941,7 +939,7 @@ fn check_impl_item<'tcx>(
941939
tcx: TyCtxt<'tcx>,
942940
impl_item: &'tcx hir::ImplItem<'tcx>,
943941
) -> Result<(), ErrorGuaranteed> {
944-
CollectItemTypesVisitor { tcx }.visit_impl_item(impl_item);
942+
crate::collect::lower_impl_item(tcx, impl_item.impl_item_id());
945943

946944
let (method_sig, span) = match impl_item.kind {
947945
hir::ImplItemKind::Fn(ref sig, _) => (Some(sig), impl_item.span),

compiler/rustc_hir_analysis/src/collect.rs

Lines changed: 5 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,10 @@ use rustc_errors::{
2828
};
2929
use rustc_hir::def::DefKind;
3030
use rustc_hir::def_id::{DefId, LocalDefId};
31-
use rustc_hir::intravisit::{self, InferKind, Visitor, VisitorExt, walk_generics};
31+
use rustc_hir::intravisit::{InferKind, Visitor, VisitorExt, walk_generics};
3232
use rustc_hir::{self as hir, GenericParamKind, HirId, Node, PreciseCapturingArgKind};
3333
use rustc_infer::infer::{InferCtxt, TyCtxtInferExt};
3434
use rustc_infer::traits::{DynCompatibilityViolation, ObligationCause};
35-
use rustc_middle::hir::nested_filter;
3635
use rustc_middle::query::Providers;
3736
use rustc_middle::ty::util::{Discr, IntTypeExt};
3837
use rustc_middle::ty::{self, AdtKind, Const, IsSuggestable, Ty, TyCtxt, TypingMode, fold_regions};
@@ -148,10 +147,6 @@ impl<'v> Visitor<'v> for HirPlaceholderCollector {
148147
}
149148
}
150149

151-
pub(crate) struct CollectItemTypesVisitor<'tcx> {
152-
pub tcx: TyCtxt<'tcx>,
153-
}
154-
155150
/// If there are any placeholder types (`_`), emit an error explaining that this is not allowed
156151
/// and suggest adding type parameters in the appropriate place, taking into consideration any and
157152
/// all already existing generic type parameters to avoid suggesting a name that is already in use.
@@ -243,7 +238,7 @@ pub(crate) fn placeholder_type_error_diag<'cx, 'tcx>(
243238
err
244239
}
245240

246-
fn reject_placeholder_type_signatures_in_item<'tcx>(
241+
pub(super) fn reject_placeholder_type_signatures_in_item<'tcx>(
247242
tcx: TyCtxt<'tcx>,
248243
item: &'tcx hir::Item<'tcx>,
249244
) {
@@ -274,30 +269,6 @@ fn reject_placeholder_type_signatures_in_item<'tcx>(
274269
);
275270
}
276271

277-
impl<'tcx> Visitor<'tcx> for CollectItemTypesVisitor<'tcx> {
278-
type NestedFilter = nested_filter::OnlyBodies;
279-
280-
fn maybe_tcx(&mut self) -> Self::MaybeTyCtxt {
281-
self.tcx
282-
}
283-
284-
fn visit_item(&mut self, item: &'tcx hir::Item<'tcx>) {
285-
lower_item(self.tcx, item.item_id());
286-
reject_placeholder_type_signatures_in_item(self.tcx, item);
287-
intravisit::walk_item(self, item);
288-
}
289-
290-
fn visit_trait_item(&mut self, trait_item: &'tcx hir::TraitItem<'tcx>) {
291-
lower_trait_item(self.tcx, trait_item.trait_item_id());
292-
intravisit::walk_trait_item(self, trait_item);
293-
}
294-
295-
fn visit_impl_item(&mut self, impl_item: &'tcx hir::ImplItem<'tcx>) {
296-
lower_impl_item(self.tcx, impl_item.impl_item_id());
297-
intravisit::walk_impl_item(self, impl_item);
298-
}
299-
}
300-
301272
///////////////////////////////////////////////////////////////////////////
302273
// Utility types and common code for the above passes.
303274

@@ -618,7 +589,7 @@ fn get_new_lifetime_name<'tcx>(
618589
}
619590

620591
#[instrument(level = "debug", skip_all)]
621-
fn lower_item(tcx: TyCtxt<'_>, item_id: hir::ItemId) {
592+
pub(super) fn lower_item(tcx: TyCtxt<'_>, item_id: hir::ItemId) {
622593
let it = tcx.hir_item(item_id);
623594
debug!(item = ?it.kind.ident(), id = %it.hir_id());
624595
let def_id = item_id.owner_id.def_id;
@@ -739,7 +710,7 @@ fn lower_item(tcx: TyCtxt<'_>, item_id: hir::ItemId) {
739710
}
740711
}
741712

742-
fn lower_trait_item(tcx: TyCtxt<'_>, trait_item_id: hir::TraitItemId) {
713+
pub(crate) fn lower_trait_item(tcx: TyCtxt<'_>, trait_item_id: hir::TraitItemId) {
743714
let trait_item = tcx.hir_trait_item(trait_item_id);
744715
let def_id = trait_item_id.owner_id;
745716
tcx.ensure_ok().generics_of(def_id);
@@ -810,7 +781,7 @@ fn lower_trait_item(tcx: TyCtxt<'_>, trait_item_id: hir::TraitItemId) {
810781
tcx.ensure_ok().predicates_of(def_id);
811782
}
812783

813-
fn lower_impl_item(tcx: TyCtxt<'_>, impl_item_id: hir::ImplItemId) {
784+
pub(super) fn lower_impl_item(tcx: TyCtxt<'_>, impl_item_id: hir::ImplItemId) {
814785
let def_id = impl_item_id.owner_id;
815786
tcx.ensure_ok().generics_of(def_id);
816787
tcx.ensure_ok().type_of(def_id);

0 commit comments

Comments
 (0)