Get rid of a_is_expected from ToTrace
This commit is contained in:
parent
4fb097a5de
commit
d753aba3b3
@ -92,12 +92,7 @@ pub fn fork_with_intercrate(&self, intercrate: bool) -> Self {
|
||||
}
|
||||
|
||||
pub trait ToTrace<'tcx>: Relate<TyCtxt<'tcx>> + Copy {
|
||||
fn to_trace(
|
||||
cause: &ObligationCause<'tcx>,
|
||||
a_is_expected: bool,
|
||||
a: Self,
|
||||
b: Self,
|
||||
) -> TypeTrace<'tcx>;
|
||||
fn to_trace(cause: &ObligationCause<'tcx>, a: Self, b: Self) -> TypeTrace<'tcx>;
|
||||
}
|
||||
|
||||
impl<'a, 'tcx> At<'a, 'tcx> {
|
||||
@ -116,7 +111,7 @@ pub fn sup<T>(
|
||||
{
|
||||
let mut fields = CombineFields::new(
|
||||
self.infcx,
|
||||
ToTrace::to_trace(self.cause, true, expected, actual),
|
||||
ToTrace::to_trace(self.cause, expected, actual),
|
||||
self.param_env,
|
||||
define_opaque_types,
|
||||
);
|
||||
@ -136,7 +131,7 @@ pub fn sub<T>(
|
||||
{
|
||||
let mut fields = CombineFields::new(
|
||||
self.infcx,
|
||||
ToTrace::to_trace(self.cause, true, expected, actual),
|
||||
ToTrace::to_trace(self.cause, expected, actual),
|
||||
self.param_env,
|
||||
define_opaque_types,
|
||||
);
|
||||
@ -154,10 +149,7 @@ pub fn eq<T>(
|
||||
where
|
||||
T: ToTrace<'tcx>,
|
||||
{
|
||||
let mut fields = CombineFields::new(
|
||||
self.infcx,
|
||||
ToTrace::to_trace(self.cause, true, expected, actual),
|
||||
self.param_env,
|
||||
self.eq_trace(
|
||||
define_opaque_types,
|
||||
ToTrace::to_trace(self.cause, expected, actual),
|
||||
expected,
|
||||
@ -209,7 +201,7 @@ pub fn eq_structurally_relating_aliases<T>(
|
||||
assert!(self.infcx.next_trait_solver());
|
||||
let mut fields = CombineFields::new(
|
||||
self.infcx,
|
||||
ToTrace::to_trace(self.cause, true, expected, actual),
|
||||
ToTrace::to_trace(self.cause, expected, actual),
|
||||
self.param_env,
|
||||
DefineOpaqueTypes::Yes,
|
||||
);
|
||||
@ -301,7 +293,7 @@ pub fn lub<T>(
|
||||
{
|
||||
let mut fields = CombineFields::new(
|
||||
self.infcx,
|
||||
ToTrace::to_trace(self.cause, true, expected, actual),
|
||||
ToTrace::to_trace(self.cause, expected, actual),
|
||||
self.param_env,
|
||||
define_opaque_types,
|
||||
);
|
||||
@ -323,7 +315,7 @@ pub fn glb<T>(
|
||||
{
|
||||
let mut fields = CombineFields::new(
|
||||
self.infcx,
|
||||
ToTrace::to_trace(self.cause, true, expected, actual),
|
||||
ToTrace::to_trace(self.cause, expected, actual),
|
||||
self.param_env,
|
||||
define_opaque_types,
|
||||
);
|
||||
@ -333,18 +325,13 @@ pub fn glb<T>(
|
||||
}
|
||||
|
||||
impl<'tcx> ToTrace<'tcx> for ImplSubject<'tcx> {
|
||||
fn to_trace(
|
||||
cause: &ObligationCause<'tcx>,
|
||||
a_is_expected: bool,
|
||||
a: Self,
|
||||
b: Self,
|
||||
) -> TypeTrace<'tcx> {
|
||||
fn to_trace(cause: &ObligationCause<'tcx>, a: Self, b: Self) -> TypeTrace<'tcx> {
|
||||
match (a, b) {
|
||||
(ImplSubject::Trait(trait_ref_a), ImplSubject::Trait(trait_ref_b)) => {
|
||||
ToTrace::to_trace(cause, a_is_expected, trait_ref_a, trait_ref_b)
|
||||
ToTrace::to_trace(cause, trait_ref_a, trait_ref_b)
|
||||
}
|
||||
(ImplSubject::Inherent(ty_a), ImplSubject::Inherent(ty_b)) => {
|
||||
ToTrace::to_trace(cause, a_is_expected, ty_a, ty_b)
|
||||
ToTrace::to_trace(cause, ty_a, ty_b)
|
||||
}
|
||||
(ImplSubject::Trait(_), ImplSubject::Inherent(_))
|
||||
| (ImplSubject::Inherent(_), ImplSubject::Trait(_)) => {
|
||||
@ -355,65 +342,45 @@ fn to_trace(
|
||||
}
|
||||
|
||||
impl<'tcx> ToTrace<'tcx> for Ty<'tcx> {
|
||||
fn to_trace(
|
||||
cause: &ObligationCause<'tcx>,
|
||||
a_is_expected: bool,
|
||||
a: Self,
|
||||
b: Self,
|
||||
) -> TypeTrace<'tcx> {
|
||||
fn to_trace(cause: &ObligationCause<'tcx>, a: Self, b: Self) -> TypeTrace<'tcx> {
|
||||
TypeTrace {
|
||||
cause: cause.clone(),
|
||||
values: ValuePairs::Terms(ExpectedFound::new(a_is_expected, a.into(), b.into())),
|
||||
values: ValuePairs::Terms(ExpectedFound::new(true, a.into(), b.into())),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<'tcx> ToTrace<'tcx> for ty::Region<'tcx> {
|
||||
fn to_trace(
|
||||
cause: &ObligationCause<'tcx>,
|
||||
a_is_expected: bool,
|
||||
a: Self,
|
||||
b: Self,
|
||||
) -> TypeTrace<'tcx> {
|
||||
fn to_trace(cause: &ObligationCause<'tcx>, a: Self, b: Self) -> TypeTrace<'tcx> {
|
||||
TypeTrace {
|
||||
cause: cause.clone(),
|
||||
values: ValuePairs::Regions(ExpectedFound::new(a_is_expected, a, b)),
|
||||
values: ValuePairs::Regions(ExpectedFound::new(true, a, b)),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<'tcx> ToTrace<'tcx> for Const<'tcx> {
|
||||
fn to_trace(
|
||||
cause: &ObligationCause<'tcx>,
|
||||
a_is_expected: bool,
|
||||
a: Self,
|
||||
b: Self,
|
||||
) -> TypeTrace<'tcx> {
|
||||
fn to_trace(cause: &ObligationCause<'tcx>, a: Self, b: Self) -> TypeTrace<'tcx> {
|
||||
TypeTrace {
|
||||
cause: cause.clone(),
|
||||
values: ValuePairs::Terms(ExpectedFound::new(a_is_expected, a.into(), b.into())),
|
||||
values: ValuePairs::Terms(ExpectedFound::new(true, a.into(), b.into())),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<'tcx> ToTrace<'tcx> for ty::GenericArg<'tcx> {
|
||||
fn to_trace(
|
||||
cause: &ObligationCause<'tcx>,
|
||||
a_is_expected: bool,
|
||||
a: Self,
|
||||
b: Self,
|
||||
) -> TypeTrace<'tcx> {
|
||||
fn to_trace(cause: &ObligationCause<'tcx>, a: Self, b: Self) -> TypeTrace<'tcx> {
|
||||
TypeTrace {
|
||||
cause: cause.clone(),
|
||||
values: match (a.unpack(), b.unpack()) {
|
||||
(GenericArgKind::Lifetime(a), GenericArgKind::Lifetime(b)) => {
|
||||
ValuePairs::Regions(ExpectedFound::new(a_is_expected, a, b))
|
||||
ValuePairs::Regions(ExpectedFound::new(true, a, b))
|
||||
}
|
||||
(GenericArgKind::Type(a), GenericArgKind::Type(b)) => {
|
||||
ValuePairs::Terms(ExpectedFound::new(a_is_expected, a.into(), b.into()))
|
||||
ValuePairs::Terms(ExpectedFound::new(true, a.into(), b.into()))
|
||||
}
|
||||
(GenericArgKind::Const(a), GenericArgKind::Const(b)) => {
|
||||
ValuePairs::Terms(ExpectedFound::new(a_is_expected, a.into(), b.into()))
|
||||
ValuePairs::Terms(ExpectedFound::new(true, a.into(), b.into()))
|
||||
}
|
||||
|
||||
(
|
||||
@ -436,72 +403,47 @@ fn to_trace(
|
||||
}
|
||||
|
||||
impl<'tcx> ToTrace<'tcx> for ty::Term<'tcx> {
|
||||
fn to_trace(
|
||||
cause: &ObligationCause<'tcx>,
|
||||
a_is_expected: bool,
|
||||
a: Self,
|
||||
b: Self,
|
||||
) -> TypeTrace<'tcx> {
|
||||
fn to_trace(cause: &ObligationCause<'tcx>, a: Self, b: Self) -> TypeTrace<'tcx> {
|
||||
TypeTrace {
|
||||
cause: cause.clone(),
|
||||
values: ValuePairs::Terms(ExpectedFound::new(a_is_expected, a, b)),
|
||||
values: ValuePairs::Terms(ExpectedFound::new(true, a, b)),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<'tcx> ToTrace<'tcx> for ty::TraitRef<'tcx> {
|
||||
fn to_trace(
|
||||
cause: &ObligationCause<'tcx>,
|
||||
a_is_expected: bool,
|
||||
a: Self,
|
||||
b: Self,
|
||||
) -> TypeTrace<'tcx> {
|
||||
fn to_trace(cause: &ObligationCause<'tcx>, a: Self, b: Self) -> TypeTrace<'tcx> {
|
||||
TypeTrace {
|
||||
cause: cause.clone(),
|
||||
values: ValuePairs::TraitRefs(ExpectedFound::new(a_is_expected, a, b)),
|
||||
values: ValuePairs::TraitRefs(ExpectedFound::new(true, a, b)),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<'tcx> ToTrace<'tcx> for ty::AliasTy<'tcx> {
|
||||
fn to_trace(
|
||||
cause: &ObligationCause<'tcx>,
|
||||
a_is_expected: bool,
|
||||
a: Self,
|
||||
b: Self,
|
||||
) -> TypeTrace<'tcx> {
|
||||
fn to_trace(cause: &ObligationCause<'tcx>, a: Self, b: Self) -> TypeTrace<'tcx> {
|
||||
TypeTrace {
|
||||
cause: cause.clone(),
|
||||
values: ValuePairs::Aliases(ExpectedFound::new(a_is_expected, a.into(), b.into())),
|
||||
values: ValuePairs::Aliases(ExpectedFound::new(true, a.into(), b.into())),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<'tcx> ToTrace<'tcx> for ty::AliasTerm<'tcx> {
|
||||
fn to_trace(
|
||||
cause: &ObligationCause<'tcx>,
|
||||
a_is_expected: bool,
|
||||
a: Self,
|
||||
b: Self,
|
||||
) -> TypeTrace<'tcx> {
|
||||
fn to_trace(cause: &ObligationCause<'tcx>, a: Self, b: Self) -> TypeTrace<'tcx> {
|
||||
TypeTrace {
|
||||
cause: cause.clone(),
|
||||
values: ValuePairs::Aliases(ExpectedFound::new(a_is_expected, a, b)),
|
||||
values: ValuePairs::Aliases(ExpectedFound::new(true, a, b)),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<'tcx> ToTrace<'tcx> for ty::FnSig<'tcx> {
|
||||
fn to_trace(
|
||||
cause: &ObligationCause<'tcx>,
|
||||
a_is_expected: bool,
|
||||
a: Self,
|
||||
b: Self,
|
||||
) -> TypeTrace<'tcx> {
|
||||
fn to_trace(cause: &ObligationCause<'tcx>, a: Self, b: Self) -> TypeTrace<'tcx> {
|
||||
TypeTrace {
|
||||
cause: cause.clone(),
|
||||
values: ValuePairs::PolySigs(ExpectedFound::new(
|
||||
a_is_expected,
|
||||
true,
|
||||
ty::Binder::dummy(a),
|
||||
ty::Binder::dummy(b),
|
||||
)),
|
||||
@ -510,43 +452,28 @@ fn to_trace(
|
||||
}
|
||||
|
||||
impl<'tcx> ToTrace<'tcx> for ty::PolyFnSig<'tcx> {
|
||||
fn to_trace(
|
||||
cause: &ObligationCause<'tcx>,
|
||||
a_is_expected: bool,
|
||||
a: Self,
|
||||
b: Self,
|
||||
) -> TypeTrace<'tcx> {
|
||||
fn to_trace(cause: &ObligationCause<'tcx>, a: Self, b: Self) -> TypeTrace<'tcx> {
|
||||
TypeTrace {
|
||||
cause: cause.clone(),
|
||||
values: ValuePairs::PolySigs(ExpectedFound::new(a_is_expected, a, b)),
|
||||
values: ValuePairs::PolySigs(ExpectedFound::new(true, a, b)),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<'tcx> ToTrace<'tcx> for ty::PolyExistentialTraitRef<'tcx> {
|
||||
fn to_trace(
|
||||
cause: &ObligationCause<'tcx>,
|
||||
a_is_expected: bool,
|
||||
a: Self,
|
||||
b: Self,
|
||||
) -> TypeTrace<'tcx> {
|
||||
fn to_trace(cause: &ObligationCause<'tcx>, a: Self, b: Self) -> TypeTrace<'tcx> {
|
||||
TypeTrace {
|
||||
cause: cause.clone(),
|
||||
values: ValuePairs::ExistentialTraitRef(ExpectedFound::new(a_is_expected, a, b)),
|
||||
values: ValuePairs::ExistentialTraitRef(ExpectedFound::new(true, a, b)),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<'tcx> ToTrace<'tcx> for ty::PolyExistentialProjection<'tcx> {
|
||||
fn to_trace(
|
||||
cause: &ObligationCause<'tcx>,
|
||||
a_is_expected: bool,
|
||||
a: Self,
|
||||
b: Self,
|
||||
) -> TypeTrace<'tcx> {
|
||||
fn to_trace(cause: &ObligationCause<'tcx>, a: Self, b: Self) -> TypeTrace<'tcx> {
|
||||
TypeTrace {
|
||||
cause: cause.clone(),
|
||||
values: ValuePairs::ExistentialProjection(ExpectedFound::new(a_is_expected, a, b)),
|
||||
values: ValuePairs::ExistentialProjection(ExpectedFound::new(true, a, b)),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2598,7 +2598,6 @@ fn match_upcast_principal(
|
||||
DefineOpaqueTypes::Yes,
|
||||
ToTrace::to_trace(
|
||||
&obligation.cause,
|
||||
true,
|
||||
hr_target_principal,
|
||||
hr_source_principal,
|
||||
),
|
||||
@ -2638,7 +2637,6 @@ fn match_upcast_principal(
|
||||
DefineOpaqueTypes::Yes,
|
||||
ToTrace::to_trace(
|
||||
&obligation.cause,
|
||||
true,
|
||||
hr_target_projection,
|
||||
hr_source_projection,
|
||||
),
|
||||
@ -2669,7 +2667,6 @@ fn match_upcast_principal(
|
||||
DefineOpaqueTypes::Yes,
|
||||
ToTrace::to_trace(
|
||||
&obligation.cause,
|
||||
true,
|
||||
hr_target_projection,
|
||||
hr_source_projection,
|
||||
),
|
||||
|
Loading…
Reference in New Issue
Block a user