Rollup merge of #147840 - jdonszelmann:unsizing-coercions, r=lcnr
Rework unsizing coercions in the new solver Replaces https://github.com/rust-lang/rust/pull/141926, contains: - a commit adding tests that fail before this work - the two commits from the previous PR - a commit in which these tests are fixed - finally, a fixup for an in my opinion rather large regression in diagnostics. It's still not perfect, but better? I hope this is roughly what you had in mind Fixes https://github.com/rust-lang/trait-system-refactor-initiative/issues/241 and https://github.com/rust-lang/trait-system-refactor-initiative/issues/238, adding tests for both r? ````@lcnr````
This commit is contained in:
@@ -24,7 +24,7 @@ use tracing::instrument;
|
||||
use self::derive_errors::*;
|
||||
use super::Certainty;
|
||||
use super::delegate::SolverDelegate;
|
||||
use super::inspect::{self, ProofTreeInferCtxtExt};
|
||||
use super::inspect::{self, InferCtxtProofTreeExt};
|
||||
use crate::traits::{FulfillmentError, ScrubbedTraitError};
|
||||
|
||||
mod derive_errors;
|
||||
|
||||
@@ -15,7 +15,7 @@ use rustc_next_trait_solver::solve::{GoalEvaluation, SolverDelegateEvalExt as _}
|
||||
use tracing::{instrument, trace};
|
||||
|
||||
use crate::solve::delegate::SolverDelegate;
|
||||
use crate::solve::inspect::{self, ProofTreeInferCtxtExt, ProofTreeVisitor};
|
||||
use crate::solve::inspect::{self, InferCtxtProofTreeExt, ProofTreeVisitor};
|
||||
use crate::solve::{Certainty, deeply_normalize_for_diagnostics};
|
||||
use crate::traits::{FulfillmentError, FulfillmentErrorCode, wf};
|
||||
|
||||
|
||||
@@ -463,7 +463,7 @@ pub trait ProofTreeVisitor<'tcx> {
|
||||
fn visit_goal(&mut self, goal: &InspectGoal<'_, 'tcx>) -> Self::Result;
|
||||
}
|
||||
|
||||
#[extension(pub trait ProofTreeInferCtxtExt<'tcx>)]
|
||||
#[extension(pub trait InferCtxtProofTreeExt<'tcx>)]
|
||||
impl<'tcx> InferCtxt<'tcx> {
|
||||
fn visit_proof_tree<V: ProofTreeVisitor<'tcx>>(
|
||||
&self,
|
||||
|
||||
@@ -12,7 +12,7 @@ use rustc_middle::{bug, span_bug};
|
||||
use rustc_span::Span;
|
||||
use thin_vec::thin_vec;
|
||||
|
||||
use crate::solve::inspect::{self, ProofTreeInferCtxtExt};
|
||||
use crate::solve::inspect::{self, InferCtxtProofTreeExt};
|
||||
|
||||
#[extension(pub trait InferCtxtSelectExt<'tcx>)]
|
||||
impl<'tcx> InferCtxt<'tcx> {
|
||||
|
||||
@@ -29,7 +29,7 @@ use tracing::{debug, instrument, warn};
|
||||
use super::ObligationCtxt;
|
||||
use crate::error_reporting::traits::suggest_new_overflow_limit;
|
||||
use crate::infer::InferOk;
|
||||
use crate::solve::inspect::{InspectGoal, ProofTreeInferCtxtExt, ProofTreeVisitor};
|
||||
use crate::solve::inspect::{InferCtxtProofTreeExt, InspectGoal, ProofTreeVisitor};
|
||||
use crate::solve::{SolverDelegate, deeply_normalize_for_diagnostics, inspect};
|
||||
use crate::traits::query::evaluate_obligation::InferCtxtExt;
|
||||
use crate::traits::select::IntercrateAmbiguityCause;
|
||||
|
||||
Reference in New Issue
Block a user