mirror of
https://github.com/rust-lang/rust.git
synced 2025-05-14 02:49:40 +00:00
Get rid of a_is_expected from ToTrace
This commit is contained in:
parent
4fb097a5de
commit
d753aba3b3
@ -92,12 +92,7 @@ impl<'tcx> InferCtxt<'tcx> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub trait ToTrace<'tcx>: Relate<TyCtxt<'tcx>> + Copy {
|
pub trait ToTrace<'tcx>: Relate<TyCtxt<'tcx>> + Copy {
|
||||||
fn to_trace(
|
fn to_trace(cause: &ObligationCause<'tcx>, a: Self, b: Self) -> TypeTrace<'tcx>;
|
||||||
cause: &ObligationCause<'tcx>,
|
|
||||||
a_is_expected: bool,
|
|
||||||
a: Self,
|
|
||||||
b: Self,
|
|
||||||
) -> TypeTrace<'tcx>;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, 'tcx> At<'a, 'tcx> {
|
impl<'a, 'tcx> At<'a, 'tcx> {
|
||||||
@ -116,7 +111,7 @@ impl<'a, 'tcx> At<'a, 'tcx> {
|
|||||||
{
|
{
|
||||||
let mut fields = CombineFields::new(
|
let mut fields = CombineFields::new(
|
||||||
self.infcx,
|
self.infcx,
|
||||||
ToTrace::to_trace(self.cause, true, expected, actual),
|
ToTrace::to_trace(self.cause, expected, actual),
|
||||||
self.param_env,
|
self.param_env,
|
||||||
define_opaque_types,
|
define_opaque_types,
|
||||||
);
|
);
|
||||||
@ -136,7 +131,7 @@ impl<'a, 'tcx> At<'a, 'tcx> {
|
|||||||
{
|
{
|
||||||
let mut fields = CombineFields::new(
|
let mut fields = CombineFields::new(
|
||||||
self.infcx,
|
self.infcx,
|
||||||
ToTrace::to_trace(self.cause, true, expected, actual),
|
ToTrace::to_trace(self.cause, expected, actual),
|
||||||
self.param_env,
|
self.param_env,
|
||||||
define_opaque_types,
|
define_opaque_types,
|
||||||
);
|
);
|
||||||
@ -154,10 +149,7 @@ impl<'a, 'tcx> At<'a, 'tcx> {
|
|||||||
where
|
where
|
||||||
T: ToTrace<'tcx>,
|
T: ToTrace<'tcx>,
|
||||||
{
|
{
|
||||||
let mut fields = CombineFields::new(
|
self.eq_trace(
|
||||||
self.infcx,
|
|
||||||
ToTrace::to_trace(self.cause, true, expected, actual),
|
|
||||||
self.param_env,
|
|
||||||
define_opaque_types,
|
define_opaque_types,
|
||||||
ToTrace::to_trace(self.cause, expected, actual),
|
ToTrace::to_trace(self.cause, expected, actual),
|
||||||
expected,
|
expected,
|
||||||
@ -209,7 +201,7 @@ impl<'a, 'tcx> At<'a, 'tcx> {
|
|||||||
assert!(self.infcx.next_trait_solver());
|
assert!(self.infcx.next_trait_solver());
|
||||||
let mut fields = CombineFields::new(
|
let mut fields = CombineFields::new(
|
||||||
self.infcx,
|
self.infcx,
|
||||||
ToTrace::to_trace(self.cause, true, expected, actual),
|
ToTrace::to_trace(self.cause, expected, actual),
|
||||||
self.param_env,
|
self.param_env,
|
||||||
DefineOpaqueTypes::Yes,
|
DefineOpaqueTypes::Yes,
|
||||||
);
|
);
|
||||||
@ -301,7 +293,7 @@ impl<'a, 'tcx> At<'a, 'tcx> {
|
|||||||
{
|
{
|
||||||
let mut fields = CombineFields::new(
|
let mut fields = CombineFields::new(
|
||||||
self.infcx,
|
self.infcx,
|
||||||
ToTrace::to_trace(self.cause, true, expected, actual),
|
ToTrace::to_trace(self.cause, expected, actual),
|
||||||
self.param_env,
|
self.param_env,
|
||||||
define_opaque_types,
|
define_opaque_types,
|
||||||
);
|
);
|
||||||
@ -323,7 +315,7 @@ impl<'a, 'tcx> At<'a, 'tcx> {
|
|||||||
{
|
{
|
||||||
let mut fields = CombineFields::new(
|
let mut fields = CombineFields::new(
|
||||||
self.infcx,
|
self.infcx,
|
||||||
ToTrace::to_trace(self.cause, true, expected, actual),
|
ToTrace::to_trace(self.cause, expected, actual),
|
||||||
self.param_env,
|
self.param_env,
|
||||||
define_opaque_types,
|
define_opaque_types,
|
||||||
);
|
);
|
||||||
@ -333,18 +325,13 @@ impl<'a, 'tcx> At<'a, 'tcx> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl<'tcx> ToTrace<'tcx> for ImplSubject<'tcx> {
|
impl<'tcx> ToTrace<'tcx> for ImplSubject<'tcx> {
|
||||||
fn to_trace(
|
fn to_trace(cause: &ObligationCause<'tcx>, a: Self, b: Self) -> TypeTrace<'tcx> {
|
||||||
cause: &ObligationCause<'tcx>,
|
|
||||||
a_is_expected: bool,
|
|
||||||
a: Self,
|
|
||||||
b: Self,
|
|
||||||
) -> TypeTrace<'tcx> {
|
|
||||||
match (a, b) {
|
match (a, b) {
|
||||||
(ImplSubject::Trait(trait_ref_a), ImplSubject::Trait(trait_ref_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)) => {
|
(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::Trait(_), ImplSubject::Inherent(_))
|
||||||
| (ImplSubject::Inherent(_), ImplSubject::Trait(_)) => {
|
| (ImplSubject::Inherent(_), ImplSubject::Trait(_)) => {
|
||||||
@ -355,65 +342,45 @@ impl<'tcx> ToTrace<'tcx> for ImplSubject<'tcx> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl<'tcx> ToTrace<'tcx> for Ty<'tcx> {
|
impl<'tcx> ToTrace<'tcx> for Ty<'tcx> {
|
||||||
fn to_trace(
|
fn to_trace(cause: &ObligationCause<'tcx>, a: Self, b: Self) -> TypeTrace<'tcx> {
|
||||||
cause: &ObligationCause<'tcx>,
|
|
||||||
a_is_expected: bool,
|
|
||||||
a: Self,
|
|
||||||
b: Self,
|
|
||||||
) -> TypeTrace<'tcx> {
|
|
||||||
TypeTrace {
|
TypeTrace {
|
||||||
cause: cause.clone(),
|
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> {
|
impl<'tcx> ToTrace<'tcx> for ty::Region<'tcx> {
|
||||||
fn to_trace(
|
fn to_trace(cause: &ObligationCause<'tcx>, a: Self, b: Self) -> TypeTrace<'tcx> {
|
||||||
cause: &ObligationCause<'tcx>,
|
|
||||||
a_is_expected: bool,
|
|
||||||
a: Self,
|
|
||||||
b: Self,
|
|
||||||
) -> TypeTrace<'tcx> {
|
|
||||||
TypeTrace {
|
TypeTrace {
|
||||||
cause: cause.clone(),
|
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> {
|
impl<'tcx> ToTrace<'tcx> for Const<'tcx> {
|
||||||
fn to_trace(
|
fn to_trace(cause: &ObligationCause<'tcx>, a: Self, b: Self) -> TypeTrace<'tcx> {
|
||||||
cause: &ObligationCause<'tcx>,
|
|
||||||
a_is_expected: bool,
|
|
||||||
a: Self,
|
|
||||||
b: Self,
|
|
||||||
) -> TypeTrace<'tcx> {
|
|
||||||
TypeTrace {
|
TypeTrace {
|
||||||
cause: cause.clone(),
|
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> {
|
impl<'tcx> ToTrace<'tcx> for ty::GenericArg<'tcx> {
|
||||||
fn to_trace(
|
fn to_trace(cause: &ObligationCause<'tcx>, a: Self, b: Self) -> TypeTrace<'tcx> {
|
||||||
cause: &ObligationCause<'tcx>,
|
|
||||||
a_is_expected: bool,
|
|
||||||
a: Self,
|
|
||||||
b: Self,
|
|
||||||
) -> TypeTrace<'tcx> {
|
|
||||||
TypeTrace {
|
TypeTrace {
|
||||||
cause: cause.clone(),
|
cause: cause.clone(),
|
||||||
values: match (a.unpack(), b.unpack()) {
|
values: match (a.unpack(), b.unpack()) {
|
||||||
(GenericArgKind::Lifetime(a), GenericArgKind::Lifetime(b)) => {
|
(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)) => {
|
(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)) => {
|
(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 @@ impl<'tcx> ToTrace<'tcx> for ty::GenericArg<'tcx> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl<'tcx> ToTrace<'tcx> for ty::Term<'tcx> {
|
impl<'tcx> ToTrace<'tcx> for ty::Term<'tcx> {
|
||||||
fn to_trace(
|
fn to_trace(cause: &ObligationCause<'tcx>, a: Self, b: Self) -> TypeTrace<'tcx> {
|
||||||
cause: &ObligationCause<'tcx>,
|
|
||||||
a_is_expected: bool,
|
|
||||||
a: Self,
|
|
||||||
b: Self,
|
|
||||||
) -> TypeTrace<'tcx> {
|
|
||||||
TypeTrace {
|
TypeTrace {
|
||||||
cause: cause.clone(),
|
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> {
|
impl<'tcx> ToTrace<'tcx> for ty::TraitRef<'tcx> {
|
||||||
fn to_trace(
|
fn to_trace(cause: &ObligationCause<'tcx>, a: Self, b: Self) -> TypeTrace<'tcx> {
|
||||||
cause: &ObligationCause<'tcx>,
|
|
||||||
a_is_expected: bool,
|
|
||||||
a: Self,
|
|
||||||
b: Self,
|
|
||||||
) -> TypeTrace<'tcx> {
|
|
||||||
TypeTrace {
|
TypeTrace {
|
||||||
cause: cause.clone(),
|
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> {
|
impl<'tcx> ToTrace<'tcx> for ty::AliasTy<'tcx> {
|
||||||
fn to_trace(
|
fn to_trace(cause: &ObligationCause<'tcx>, a: Self, b: Self) -> TypeTrace<'tcx> {
|
||||||
cause: &ObligationCause<'tcx>,
|
|
||||||
a_is_expected: bool,
|
|
||||||
a: Self,
|
|
||||||
b: Self,
|
|
||||||
) -> TypeTrace<'tcx> {
|
|
||||||
TypeTrace {
|
TypeTrace {
|
||||||
cause: cause.clone(),
|
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> {
|
impl<'tcx> ToTrace<'tcx> for ty::AliasTerm<'tcx> {
|
||||||
fn to_trace(
|
fn to_trace(cause: &ObligationCause<'tcx>, a: Self, b: Self) -> TypeTrace<'tcx> {
|
||||||
cause: &ObligationCause<'tcx>,
|
|
||||||
a_is_expected: bool,
|
|
||||||
a: Self,
|
|
||||||
b: Self,
|
|
||||||
) -> TypeTrace<'tcx> {
|
|
||||||
TypeTrace {
|
TypeTrace {
|
||||||
cause: cause.clone(),
|
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> {
|
impl<'tcx> ToTrace<'tcx> for ty::FnSig<'tcx> {
|
||||||
fn to_trace(
|
fn to_trace(cause: &ObligationCause<'tcx>, a: Self, b: Self) -> TypeTrace<'tcx> {
|
||||||
cause: &ObligationCause<'tcx>,
|
|
||||||
a_is_expected: bool,
|
|
||||||
a: Self,
|
|
||||||
b: Self,
|
|
||||||
) -> TypeTrace<'tcx> {
|
|
||||||
TypeTrace {
|
TypeTrace {
|
||||||
cause: cause.clone(),
|
cause: cause.clone(),
|
||||||
values: ValuePairs::PolySigs(ExpectedFound::new(
|
values: ValuePairs::PolySigs(ExpectedFound::new(
|
||||||
a_is_expected,
|
true,
|
||||||
ty::Binder::dummy(a),
|
ty::Binder::dummy(a),
|
||||||
ty::Binder::dummy(b),
|
ty::Binder::dummy(b),
|
||||||
)),
|
)),
|
||||||
@ -510,43 +452,28 @@ impl<'tcx> ToTrace<'tcx> for ty::FnSig<'tcx> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl<'tcx> ToTrace<'tcx> for ty::PolyFnSig<'tcx> {
|
impl<'tcx> ToTrace<'tcx> for ty::PolyFnSig<'tcx> {
|
||||||
fn to_trace(
|
fn to_trace(cause: &ObligationCause<'tcx>, a: Self, b: Self) -> TypeTrace<'tcx> {
|
||||||
cause: &ObligationCause<'tcx>,
|
|
||||||
a_is_expected: bool,
|
|
||||||
a: Self,
|
|
||||||
b: Self,
|
|
||||||
) -> TypeTrace<'tcx> {
|
|
||||||
TypeTrace {
|
TypeTrace {
|
||||||
cause: cause.clone(),
|
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> {
|
impl<'tcx> ToTrace<'tcx> for ty::PolyExistentialTraitRef<'tcx> {
|
||||||
fn to_trace(
|
fn to_trace(cause: &ObligationCause<'tcx>, a: Self, b: Self) -> TypeTrace<'tcx> {
|
||||||
cause: &ObligationCause<'tcx>,
|
|
||||||
a_is_expected: bool,
|
|
||||||
a: Self,
|
|
||||||
b: Self,
|
|
||||||
) -> TypeTrace<'tcx> {
|
|
||||||
TypeTrace {
|
TypeTrace {
|
||||||
cause: cause.clone(),
|
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> {
|
impl<'tcx> ToTrace<'tcx> for ty::PolyExistentialProjection<'tcx> {
|
||||||
fn to_trace(
|
fn to_trace(cause: &ObligationCause<'tcx>, a: Self, b: Self) -> TypeTrace<'tcx> {
|
||||||
cause: &ObligationCause<'tcx>,
|
|
||||||
a_is_expected: bool,
|
|
||||||
a: Self,
|
|
||||||
b: Self,
|
|
||||||
) -> TypeTrace<'tcx> {
|
|
||||||
TypeTrace {
|
TypeTrace {
|
||||||
cause: cause.clone(),
|
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 @@ impl<'tcx> SelectionContext<'_, 'tcx> {
|
|||||||
DefineOpaqueTypes::Yes,
|
DefineOpaqueTypes::Yes,
|
||||||
ToTrace::to_trace(
|
ToTrace::to_trace(
|
||||||
&obligation.cause,
|
&obligation.cause,
|
||||||
true,
|
|
||||||
hr_target_principal,
|
hr_target_principal,
|
||||||
hr_source_principal,
|
hr_source_principal,
|
||||||
),
|
),
|
||||||
@ -2638,7 +2637,6 @@ impl<'tcx> SelectionContext<'_, 'tcx> {
|
|||||||
DefineOpaqueTypes::Yes,
|
DefineOpaqueTypes::Yes,
|
||||||
ToTrace::to_trace(
|
ToTrace::to_trace(
|
||||||
&obligation.cause,
|
&obligation.cause,
|
||||||
true,
|
|
||||||
hr_target_projection,
|
hr_target_projection,
|
||||||
hr_source_projection,
|
hr_source_projection,
|
||||||
),
|
),
|
||||||
@ -2669,7 +2667,6 @@ impl<'tcx> SelectionContext<'_, 'tcx> {
|
|||||||
DefineOpaqueTypes::Yes,
|
DefineOpaqueTypes::Yes,
|
||||||
ToTrace::to_trace(
|
ToTrace::to_trace(
|
||||||
&obligation.cause,
|
&obligation.cause,
|
||||||
true,
|
|
||||||
hr_target_projection,
|
hr_target_projection,
|
||||||
hr_source_projection,
|
hr_source_projection,
|
||||||
),
|
),
|
||||||
|
Loading…
Reference in New Issue
Block a user