Rollup merge of #125664 - compiler-errors:trace-tweaks, r=lcnr
Tweak relations to no longer rely on `TypeTrace` Remove `At::trace`, and inline all of the `Trace::equate`,etc methods into `At`. The only nontrivial change is that we use `AliasTerm` to relate two unevaluated consts in the old-solver impl of `ConstEquate`, since `AliasTerm` does implement `ToTrace` and will relate the args structurally (shallowly). r? lcnr
This commit is contained in:
@@ -363,7 +363,6 @@ impl<'tcx> EvalCtxt<'_, InferCtxt<'tcx>> {
|
||||
for (&orig, response) in iter::zip(original_values, var_values.var_values) {
|
||||
let InferOk { value: (), obligations } = infcx
|
||||
.at(&cause, param_env)
|
||||
.trace(orig, response)
|
||||
.eq_structurally_relating_aliases(orig, response)
|
||||
.unwrap();
|
||||
assert!(obligations.is_empty());
|
||||
|
||||
@@ -776,7 +776,6 @@ impl<'tcx> EvalCtxt<'_, InferCtxt<'tcx>> {
|
||||
let InferOk { value: (), obligations } = self
|
||||
.infcx
|
||||
.at(&ObligationCause::dummy(), param_env)
|
||||
.trace(term, ctor_term)
|
||||
.eq_structurally_relating_aliases(term, ctor_term)?;
|
||||
debug_assert!(obligations.is_empty());
|
||||
self.relate(param_env, alias, variance, rigid_ctor)
|
||||
@@ -796,11 +795,8 @@ impl<'tcx> EvalCtxt<'_, InferCtxt<'tcx>> {
|
||||
rhs: T,
|
||||
) -> Result<(), NoSolution> {
|
||||
let cause = ObligationCause::dummy();
|
||||
let InferOk { value: (), obligations } = self
|
||||
.infcx
|
||||
.at(&cause, param_env)
|
||||
.trace(lhs, rhs)
|
||||
.eq_structurally_relating_aliases(lhs, rhs)?;
|
||||
let InferOk { value: (), obligations } =
|
||||
self.infcx.at(&cause, param_env).eq_structurally_relating_aliases(lhs, rhs)?;
|
||||
assert!(obligations.is_empty());
|
||||
Ok(())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user