Skip to content

Commit c84917a

Browse files
committed
add EarlyBinder::subst_identity; impl ParameterizedOverTcx (needed for rustc_metadata) and Value for EarlyBinder
1 parent e9e0908 commit c84917a

File tree

3 files changed

+20
-0
lines changed

3 files changed

+20
-0
lines changed

compiler/rustc_middle/src/ty/parameterized.rs

+4
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ impl<T: ParameterizedOverTcx> ParameterizedOverTcx for ty::Binder<'static, T> {
3232
type Value<'tcx> = ty::Binder<'tcx, T::Value<'tcx>>;
3333
}
3434

35+
impl<T: ParameterizedOverTcx> ParameterizedOverTcx for ty::EarlyBinder<T> {
36+
type Value<'tcx> = ty::EarlyBinder<T::Value<'tcx>>;
37+
}
38+
3539
#[macro_export]
3640
macro_rules! trivially_parameterized_over_tcx {
3741
($($ty:ty),+ $(,)?) => {

compiler/rustc_middle/src/ty/subst.rs

+4
Original file line numberDiff line numberDiff line change
@@ -713,6 +713,10 @@ impl<'tcx, T: TypeFoldable<'tcx>> ty::EarlyBinder<T> {
713713
let mut folder = SubstFolder { tcx, substs, binders_passed: 0 };
714714
self.0.fold_with(&mut folder)
715715
}
716+
717+
pub fn subst_identity(self) -> T {
718+
self.0
719+
}
716720
}
717721

718722
///////////////////////////////////////////////////////////////////////////

compiler/rustc_middle/src/values.rs

+12
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,18 @@ impl<'tcx> Value<TyCtxt<'tcx>, DepKind> for Representability {
9494
}
9595
}
9696

97+
impl<'tcx> Value<TyCtxt<'tcx>, DepKind> for ty::EarlyBinder<Ty<'_>> {
98+
fn from_cycle_error(tcx: TyCtxt<'tcx>, cycle: &[QueryInfo<DepKind>]) -> Self {
99+
ty::EarlyBinder(Ty::from_cycle_error(tcx, cycle))
100+
}
101+
}
102+
103+
impl<'tcx> Value<TyCtxt<'tcx>, DepKind> for ty::EarlyBinder<ty::Binder<'_, ty::FnSig<'_>>> {
104+
fn from_cycle_error(tcx: TyCtxt<'tcx>, cycle: &[QueryInfo<DepKind>]) -> Self {
105+
ty::EarlyBinder(ty::Binder::from_cycle_error(tcx, cycle))
106+
}
107+
}
108+
97109
// item_and_field_ids should form a cycle where each field contains the
98110
// type in the next element in the list
99111
pub fn recursive_type_error(

0 commit comments

Comments
 (0)