Use ScrubbedTraitError in more places
This commit is contained in:
@@ -70,10 +70,17 @@ pub use self::util::{with_replaced_escaping_bound_vars, BoundVarReplacer, Placeh
|
||||
|
||||
pub use rustc_infer::traits::*;
|
||||
|
||||
// A trait error without any information in it. You likely want to alternately use [`ObligationCtxt::new_with_diagnostics`] to get a [`FulfillmentError`].
|
||||
/// A trait error without most of its information removed. This is the error
|
||||
/// returned by an [`ObligationCtxt`] by default, and suitable if you just
|
||||
/// want to see if a predicate holds, and don't particularly care about the
|
||||
/// error itself (except for if it's an ambiguity or true error).
|
||||
///
|
||||
/// use [`ObligationCtxt::new_with_diagnostics`] to get a [`FulfillmentError`].
|
||||
#[derive(Copy, Clone, Debug)]
|
||||
pub enum ScrubbedTraitError {
|
||||
/// A real error. This goal definitely does not hold.
|
||||
TrueError,
|
||||
/// An ambiguity. This goal may hold if further inference is done.
|
||||
Ambiguity,
|
||||
}
|
||||
|
||||
|
||||
@@ -8,8 +8,8 @@ use crate::infer::{InferCtxt, InferOk};
|
||||
use crate::traits::error_reporting::OverflowCause;
|
||||
use crate::traits::error_reporting::TypeErrCtxtExt;
|
||||
use crate::traits::normalize::needs_normalization;
|
||||
use crate::traits::{BoundVarReplacer, PlaceholderReplacer};
|
||||
use crate::traits::{FulfillmentError, Normalized};
|
||||
use crate::traits::Normalized;
|
||||
use crate::traits::{BoundVarReplacer, PlaceholderReplacer, ScrubbedTraitError};
|
||||
use crate::traits::{ObligationCause, PredicateObligation, Reveal};
|
||||
use rustc_data_structures::sso::SsoHashMap;
|
||||
use rustc_data_structures::stack::ensure_sufficient_stack;
|
||||
@@ -76,8 +76,7 @@ impl<'cx, 'tcx> At<'cx, 'tcx> {
|
||||
};
|
||||
|
||||
if self.infcx.next_trait_solver() {
|
||||
// TODO:
|
||||
match crate::solve::deeply_normalize_with_skipped_universes::<_, FulfillmentError<'tcx>>(
|
||||
match crate::solve::deeply_normalize_with_skipped_universes::<_, ScrubbedTraitError>(
|
||||
self, value, universes,
|
||||
) {
|
||||
Ok(value) => return Ok(Normalized { value, obligations: vec![] }),
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
use crate::solve;
|
||||
use crate::traits::query::NoSolution;
|
||||
use crate::traits::wf;
|
||||
use crate::traits::FulfillmentError;
|
||||
use crate::traits::ObligationCtxt;
|
||||
use crate::traits::ScrubbedTraitError;
|
||||
|
||||
use rustc_infer::infer::canonical::Canonical;
|
||||
use rustc_infer::infer::outlives::components::{push_outlives_components, Component};
|
||||
@@ -267,8 +267,7 @@ pub fn compute_implied_outlives_bounds_compat_inner<'tcx>(
|
||||
ocx.infcx.at(&ObligationCause::dummy(), param_env),
|
||||
ty_a,
|
||||
)
|
||||
// TODO:
|
||||
.map_err(|_errs: Vec<FulfillmentError<'tcx>>| NoSolution)?;
|
||||
.map_err(|_errs: Vec<ScrubbedTraitError>| NoSolution)?;
|
||||
}
|
||||
let mut components = smallvec![];
|
||||
push_outlives_components(tcx, ty_a, &mut components);
|
||||
|
||||
Reference in New Issue
Block a user