Move supertrait_def_ids into the elaborate module like all other fns
This commit is contained in:
parent
cd805f09ff
commit
45929a8f46
11 changed files with 27 additions and 26 deletions
|
@ -19,6 +19,7 @@ use rustc_middle::ty::{
|
|||
TypeVisitableExt, TypeVisitor, TypingMode, Upcast,
|
||||
};
|
||||
use rustc_span::Span;
|
||||
use rustc_type_ir::elaborate;
|
||||
use smallvec::SmallVec;
|
||||
use tracing::{debug, instrument};
|
||||
|
||||
|
@ -39,7 +40,7 @@ pub fn hir_ty_lowering_dyn_compatibility_violations(
|
|||
trait_def_id: DefId,
|
||||
) -> Vec<DynCompatibilityViolation> {
|
||||
debug_assert!(tcx.generics_of(trait_def_id).has_self);
|
||||
tcx.supertrait_def_ids(trait_def_id)
|
||||
elaborate::supertrait_def_ids(tcx, trait_def_id)
|
||||
.map(|def_id| predicates_reference_self(tcx, def_id, true))
|
||||
.filter(|spans| !spans.is_empty())
|
||||
.map(DynCompatibilityViolation::SupertraitSelf)
|
||||
|
@ -54,7 +55,7 @@ fn dyn_compatibility_violations(
|
|||
debug!("dyn_compatibility_violations: {:?}", trait_def_id);
|
||||
|
||||
tcx.arena.alloc_from_iter(
|
||||
tcx.supertrait_def_ids(trait_def_id)
|
||||
elaborate::supertrait_def_ids(tcx, trait_def_id)
|
||||
.flat_map(|def_id| dyn_compatibility_violations_for_trait(tcx, def_id)),
|
||||
)
|
||||
}
|
||||
|
|
|
@ -67,7 +67,7 @@ pub use self::specialize::{
|
|||
pub use self::structural_normalize::StructurallyNormalizeExt;
|
||||
pub use self::util::{
|
||||
BoundVarReplacer, PlaceholderReplacer, elaborate, expand_trait_aliases, impl_item_is_final,
|
||||
supertraits, transitive_bounds_that_define_assoc_item, upcast_choices,
|
||||
supertrait_def_ids, supertraits, transitive_bounds_that_define_assoc_item, upcast_choices,
|
||||
with_replaced_escaping_bound_vars,
|
||||
};
|
||||
use crate::error_reporting::InferCtxtErrorExt;
|
||||
|
|
|
@ -18,6 +18,7 @@ use rustc_middle::ty::visit::TypeVisitableExt;
|
|||
use rustc_middle::ty::{self, Term, Ty, TyCtxt, TypingMode, Upcast};
|
||||
use rustc_middle::{bug, span_bug};
|
||||
use rustc_span::sym;
|
||||
use rustc_type_ir::elaborate;
|
||||
use thin_vec::thin_vec;
|
||||
use tracing::{debug, instrument};
|
||||
|
||||
|
@ -836,8 +837,7 @@ fn assemble_candidates_from_object_ty<'cx, 'tcx>(
|
|||
if tcx.is_impl_trait_in_trait(obligation.predicate.def_id)
|
||||
&& let Some(out_trait_def_id) = data.principal_def_id()
|
||||
&& let rpitit_trait_def_id = tcx.parent(obligation.predicate.def_id)
|
||||
&& tcx
|
||||
.supertrait_def_ids(out_trait_def_id)
|
||||
&& elaborate::supertrait_def_ids(tcx, out_trait_def_id)
|
||||
.any(|trait_def_id| trait_def_id == rpitit_trait_def_id)
|
||||
{
|
||||
candidate_set.push_candidate(ProjectionCandidate::ObjectRpitit);
|
||||
|
|
|
@ -18,7 +18,7 @@ use rustc_infer::traits::{
|
|||
use rustc_middle::ty::fast_reject::DeepRejectCtxt;
|
||||
use rustc_middle::ty::{self, Ty, TypeVisitableExt, TypingMode};
|
||||
use rustc_middle::{bug, span_bug};
|
||||
use rustc_type_ir::Interner;
|
||||
use rustc_type_ir::{Interner, elaborate};
|
||||
use tracing::{debug, instrument, trace};
|
||||
|
||||
use super::SelectionCandidate::*;
|
||||
|
@ -1003,8 +1003,7 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
|
|||
let a_auto_traits: FxIndexSet<DefId> = a_data
|
||||
.auto_traits()
|
||||
.chain(principal_def_id_a.into_iter().flat_map(|principal_def_id| {
|
||||
self.tcx()
|
||||
.supertrait_def_ids(principal_def_id)
|
||||
elaborate::supertrait_def_ids(self.tcx(), principal_def_id)
|
||||
.filter(|def_id| self.tcx().trait_is_auto(*def_id))
|
||||
}))
|
||||
.collect();
|
||||
|
|
|
@ -32,6 +32,7 @@ use rustc_middle::ty::{
|
|||
TypingMode, Upcast,
|
||||
};
|
||||
use rustc_span::{Symbol, sym};
|
||||
use rustc_type_ir::elaborate;
|
||||
use tracing::{debug, instrument, trace};
|
||||
|
||||
use self::EvaluationResult::*;
|
||||
|
@ -2531,7 +2532,8 @@ impl<'tcx> SelectionContext<'_, 'tcx> {
|
|||
let a_auto_traits: FxIndexSet<DefId> = a_data
|
||||
.auto_traits()
|
||||
.chain(a_data.principal_def_id().into_iter().flat_map(|principal_def_id| {
|
||||
tcx.supertrait_def_ids(principal_def_id).filter(|def_id| tcx.trait_is_auto(*def_id))
|
||||
elaborate::supertrait_def_ids(tcx, principal_def_id)
|
||||
.filter(|def_id| tcx.trait_is_auto(*def_id))
|
||||
}))
|
||||
.collect();
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue