Skip to content

Commit abc838b

Browse files
committed
rm RpitConstraintChecker
we already collect opaque types from nested items during `mir_borrowck` of the root, checking that they are consistent this way.
1 parent b6d74b5 commit abc838b

File tree

1 file changed

+0
-72
lines changed
  • compiler/rustc_hir_analysis/src/collect/type_of

1 file changed

+0
-72
lines changed

Diff for: compiler/rustc_hir_analysis/src/collect/type_of/opaque.rs

-72
Original file line numberDiff line numberDiff line change
@@ -318,20 +318,6 @@ pub(super) fn find_opaque_ty_constraints_for_rpit<'tcx>(
318318

319319
let mir_opaque_ty = tcx.mir_borrowck(owner_def_id).concrete_opaque_types.get(&def_id).copied();
320320
if let Some(mir_opaque_ty) = mir_opaque_ty {
321-
if mir_opaque_ty.references_error() {
322-
return mir_opaque_ty.ty;
323-
}
324-
325-
debug!(?owner_def_id);
326-
let mut locator = RpitConstraintChecker { def_id, tcx, found: mir_opaque_ty };
327-
328-
match tcx.hir_node_by_def_id(owner_def_id) {
329-
Node::Item(it) => intravisit::walk_item(&mut locator, it),
330-
Node::ImplItem(it) => intravisit::walk_impl_item(&mut locator, it),
331-
Node::TraitItem(it) => intravisit::walk_trait_item(&mut locator, it),
332-
other => bug!("{:?} is not a valid scope for an opaque type item", other),
333-
}
334-
335321
mir_opaque_ty.ty
336322
} else if let Some(guar) = tables.tainted_by_errors {
337323
// Some error in the owner fn prevented us from populating
@@ -352,61 +338,3 @@ pub(super) fn find_opaque_ty_constraints_for_rpit<'tcx>(
352338
}
353339
}
354340
}
355-
356-
struct RpitConstraintChecker<'tcx> {
357-
tcx: TyCtxt<'tcx>,
358-
359-
/// def_id of the opaque type whose defining uses are being checked
360-
def_id: LocalDefId,
361-
362-
found: ty::OpaqueHiddenType<'tcx>,
363-
}
364-
365-
impl RpitConstraintChecker<'_> {
366-
#[instrument(skip(self), level = "debug")]
367-
fn check(&self, def_id: LocalDefId) {
368-
// Use borrowck to get the type with unerased regions.
369-
let concrete_opaque_types = &self.tcx.mir_borrowck(def_id).concrete_opaque_types;
370-
debug!(?concrete_opaque_types);
371-
if let Some(&concrete_type) = concrete_opaque_types.get(&self.def_id) {
372-
debug!(?concrete_type, "found constraint");
373-
if concrete_type.ty != self.found.ty {
374-
if let Ok(d) = self.found.build_mismatch_error(&concrete_type, self.tcx) {
375-
d.emit();
376-
}
377-
}
378-
}
379-
}
380-
}
381-
382-
impl<'tcx> intravisit::Visitor<'tcx> for RpitConstraintChecker<'tcx> {
383-
type NestedFilter = nested_filter::OnlyBodies;
384-
385-
fn maybe_tcx(&mut self) -> Self::MaybeTyCtxt {
386-
self.tcx
387-
}
388-
fn visit_expr(&mut self, ex: &'tcx Expr<'tcx>) {
389-
intravisit::walk_expr(self, ex);
390-
}
391-
fn visit_item(&mut self, it: &'tcx Item<'tcx>) {
392-
trace!(?it.owner_id);
393-
// The opaque type itself or its children are not within its reveal scope.
394-
if it.owner_id.def_id != self.def_id {
395-
self.check(it.owner_id.def_id);
396-
intravisit::walk_item(self, it);
397-
}
398-
}
399-
fn visit_impl_item(&mut self, it: &'tcx ImplItem<'tcx>) {
400-
trace!(?it.owner_id);
401-
// The opaque type itself or its children are not within its reveal scope.
402-
if it.owner_id.def_id != self.def_id {
403-
self.check(it.owner_id.def_id);
404-
intravisit::walk_impl_item(self, it);
405-
}
406-
}
407-
fn visit_trait_item(&mut self, it: &'tcx TraitItem<'tcx>) {
408-
trace!(?it.owner_id);
409-
self.check(it.owner_id.def_id);
410-
intravisit::walk_trait_item(self, it);
411-
}
412-
}

0 commit comments

Comments
 (0)