Skip to content

Commit 0cb2c16

Browse files
flodieboldjackh726
authored andcommitted
Add a missing UpcastFrom impl in rustc_type_ir
1 parent 4ff22dd commit 0cb2c16

File tree

3 files changed

+16
-28
lines changed

3 files changed

+16
-28
lines changed

compiler/rustc_middle/src/ty/predicate.rs

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@ use rustc_macros::{HashStable, extension};
66
use rustc_type_ir as ir;
77

88
use crate::ty::{
9-
self, DebruijnIndex, EarlyBinder, PredicatePolarity, Ty, TyCtxt, TypeFlags, Upcast, UpcastFrom,
10-
WithCachedTypeInfo,
9+
self, DebruijnIndex, EarlyBinder, Ty, TyCtxt, TypeFlags, Upcast, UpcastFrom, WithCachedTypeInfo,
1110
};
1211

1312
pub type TraitRef<'tcx> = ir::TraitRef<TyCtxt<'tcx>>;
@@ -536,15 +535,6 @@ impl<'tcx> UpcastFrom<TyCtxt<'tcx>, ty::Binder<'tcx, TraitRef<'tcx>>> for Clause
536535
}
537536
}
538537

539-
impl<'tcx> UpcastFrom<TyCtxt<'tcx>, ty::Binder<'tcx, TraitRef<'tcx>>> for PolyTraitPredicate<'tcx> {
540-
fn upcast_from(from: ty::Binder<'tcx, TraitRef<'tcx>>, _tcx: TyCtxt<'tcx>) -> Self {
541-
from.map_bound(|trait_ref| TraitPredicate {
542-
trait_ref,
543-
polarity: PredicatePolarity::Positive,
544-
})
545-
}
546-
}
547-
548538
impl<'tcx> UpcastFrom<TyCtxt<'tcx>, TraitPredicate<'tcx>> for Predicate<'tcx> {
549539
fn upcast_from(from: TraitPredicate<'tcx>, tcx: TyCtxt<'tcx>) -> Self {
550540
PredicateKind::Clause(ClauseKind::Trait(from)).upcast(tcx)

compiler/rustc_type_ir/src/const_kind.rs

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -95,10 +95,15 @@ rustc_index::newtype_index! {
9595

9696
/// An inference variable for a const, for use in const generics.
9797
#[derive(Copy, Clone, Eq, PartialEq, PartialOrd, Ord, Hash)]
98+
#[derive(TypeVisitable_Generic, TypeFoldable_Generic)]
9899
#[cfg_attr(feature = "nightly", derive(Encodable_NoContext, Decodable_NoContext))]
99100
pub enum InferConst {
100101
/// Infer the value of the const.
101-
Var(ConstVid),
102+
Var(
103+
#[type_foldable(identity)]
104+
#[type_visitable(ignore)]
105+
ConstVid,
106+
),
102107
/// A fresh const variable. See `infer::freshen` for more details.
103108
Fresh(u32),
104109
}
@@ -123,19 +128,3 @@ impl<CTX> HashStable<CTX> for InferConst {
123128
}
124129
}
125130
}
126-
127-
impl<I: Interner> TypeFoldable<I> for InferConst {
128-
fn try_fold_with<F: FallibleTypeFolder<I>>(self, _folder: &mut F) -> Result<Self, F::Error> {
129-
Ok(self)
130-
}
131-
132-
fn fold_with<F: TypeFolder<I>>(self, _folder: &mut F) -> Self {
133-
self
134-
}
135-
}
136-
137-
impl<I: Interner> TypeVisitable<I> for InferConst {
138-
fn visit_with<V: TypeVisitor<I>>(&self, _visitor: &mut V) -> V::Result {
139-
V::Result::output()
140-
}
141-
}

compiler/rustc_type_ir/src/predicate.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,15 @@ impl<I: Interner> UpcastFrom<I, TraitRef<I>> for TraitPredicate<I> {
184184
}
185185
}
186186

187+
impl<I: Interner> UpcastFrom<I, ty::Binder<I, TraitRef<I>>> for ty::Binder<I, TraitPredicate<I>> {
188+
fn upcast_from(from: ty::Binder<I, TraitRef<I>>, _tcx: I) -> Self {
189+
from.map_bound(|trait_ref| TraitPredicate {
190+
trait_ref,
191+
polarity: PredicatePolarity::Positive,
192+
})
193+
}
194+
}
195+
187196
impl<I: Interner> fmt::Debug for TraitPredicate<I> {
188197
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
189198
write!(f, "TraitPredicate({:?}, polarity:{:?})", self.trait_ref, self.polarity)

0 commit comments

Comments
 (0)