Skip to content

Commit 39b95c9

Browse files
committed
Don't return a Binder from TraitRef::identity
1 parent 1b8c778 commit 39b95c9

File tree

3 files changed

+9
-12
lines changed

3 files changed

+9
-12
lines changed

compiler/rustc_middle/src/ty/sty.rs

+2-6
Original file line numberDiff line numberDiff line change
@@ -855,12 +855,8 @@ impl<'tcx> TraitRef<'tcx> {
855855

856856
/// Returns a `TraitRef` of the form `P0: Foo<P1..Pn>` where `Pi`
857857
/// are the parameters defined on trait.
858-
pub fn identity(tcx: TyCtxt<'tcx>, def_id: DefId) -> Binder<'tcx, TraitRef<'tcx>> {
859-
ty::Binder::dummy(ty::TraitRef::new(
860-
tcx,
861-
def_id,
862-
InternalSubsts::identity_for_item(tcx, def_id),
863-
))
858+
pub fn identity(tcx: TyCtxt<'tcx>, def_id: DefId) -> TraitRef<'tcx> {
859+
ty::TraitRef::new(tcx, def_id, InternalSubsts::identity_for_item(tcx, def_id))
864860
}
865861

866862
pub fn with_self_ty(self, tcx: TyCtxt<'tcx>, self_ty: Ty<'tcx>) -> Self {

compiler/rustc_trait_selection/src/traits/error_reporting/ambiguity.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ pub fn recompute_applicable_impls<'tcx>(
8787
if let ty::PredicateKind::Clause(ty::Clause::Trait(trait_pred)) = kind.skip_binder()
8888
&& param_env_candidate_may_apply(kind.rebind(trait_pred))
8989
{
90-
if kind.rebind(trait_pred.trait_ref) == ty::TraitRef::identity(tcx, trait_pred.def_id()) {
90+
if kind.rebind(trait_pred.trait_ref) == ty::Binder::dummy(ty::TraitRef::identity(tcx, trait_pred.def_id())) {
9191
ambiguities.push(Ambiguity::ParamEnv(tcx.def_span(trait_pred.def_id())))
9292
} else {
9393
ambiguities.push(Ambiguity::ParamEnv(span))

compiler/rustc_trait_selection/src/traits/object_safety.rs

+6-5
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ fn predicates_reference_self(
279279
trait_def_id: DefId,
280280
supertraits_only: bool,
281281
) -> SmallVec<[Span; 1]> {
282-
let trait_ref = ty::TraitRef::identity(tcx, trait_def_id);
282+
let trait_ref = ty::Binder::dummy(ty::TraitRef::identity(tcx, trait_def_id));
283283
let predicates = if supertraits_only {
284284
tcx.super_predicates_of(trait_def_id)
285285
} else {
@@ -661,9 +661,9 @@ fn object_ty_for_trait<'tcx>(
661661
let trait_ref = ty::TraitRef::identity(tcx, trait_def_id);
662662
debug!(?trait_ref);
663663

664-
let trait_predicate = trait_ref.map_bound(|trait_ref| {
665-
ty::ExistentialPredicate::Trait(ty::ExistentialTraitRef::erase_self_ty(tcx, trait_ref))
666-
});
664+
let trait_predicate = ty::Binder::dummy(ty::ExistentialPredicate::Trait(
665+
ty::ExistentialTraitRef::erase_self_ty(tcx, trait_ref),
666+
));
667667
debug!(?trait_predicate);
668668

669669
let pred: ty::Predicate<'tcx> = trait_ref.to_predicate(tcx);
@@ -880,7 +880,8 @@ fn contains_illegal_self_type_reference<'tcx, T: TypeVisitable<TyCtxt<'tcx>>>(
880880

881881
// Compute supertraits of current trait lazily.
882882
if self.supertraits.is_none() {
883-
let trait_ref = ty::TraitRef::identity(self.tcx, self.trait_def_id);
883+
let trait_ref =
884+
ty::Binder::dummy(ty::TraitRef::identity(self.tcx, self.trait_def_id));
884885
self.supertraits = Some(
885886
traits::supertraits(self.tcx, trait_ref).map(|t| t.def_id()).collect(),
886887
);

0 commit comments

Comments
 (0)