update use of feature flags

This commit is contained in:
lcnr 2023-12-14 13:11:28 +01:00
parent 5d97ada1ec
commit 11d16c4082
218 changed files with 227 additions and 228 deletions

View File

@ -315,7 +315,7 @@ fn check_opaque_type_well_formed<'tcx>(
parent_def_id = tcx.local_parent(parent_def_id);
}
// FIXME(-Ztrait-solver=next): We probably should use `DefiningAnchor::Error`
// FIXME(-Znext-solver): We probably should use `DefiningAnchor::Error`
// and prepopulate this `InferCtxt` with known opaque values, rather than
// using the `Bind` anchor here. For now it's fine.
let infcx = tcx

View File

@ -1003,7 +1003,7 @@ impl<'a, 'tcx> TypeChecker<'a, 'tcx> {
reported_errors: Default::default(),
};
// FIXME(-Ztrait-solver=next): A bit dubious that we're only registering
// FIXME(-Znext-solver): A bit dubious that we're only registering
// predefined opaques in the typeck root.
if infcx.next_trait_solver() && !infcx.tcx.is_typeck_child(body.source.def_id()) {
checker.register_predefined_opaques_in_new_solver();

View File

@ -1,7 +1,7 @@
// Copied from https://github.com/rust-lang/rust/blob/46455dc65069387f2dc46612f13fd45452ab301a/tests/ui/coroutine/gen_block_iterate.rs
// revisions: next old
//compile-flags: --edition 2024 -Zunstable-options
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
// run-pass
#![feature(gen_blocks)]

View File

@ -320,7 +320,7 @@ fn compare_method_predicate_entailment<'tcx>(
if check_implied_wf == CheckImpliedWfMode::Check && !(impl_sig, trait_sig).references_error() {
// Select obligations to make progress on inference before processing
// the wf obligation below.
// FIXME(-Ztrait-solver=next): Not needed when the hack below is removed.
// FIXME(-Znext-solver): Not needed when the hack below is removed.
let errors = ocx.select_where_possible();
if !errors.is_empty() {
let reported = infcx.err_ctxt().report_fulfillment_errors(errors);
@ -333,7 +333,7 @@ fn compare_method_predicate_entailment<'tcx>(
// trigger the lint. Instead, let's only consider type outlives and
// region outlives obligations.
//
// FIXME(-Ztrait-solver=next): Try removing this hack again once
// FIXME(-Znext-solver): Try removing this hack again once
// the new solver is stable.
let mut wf_args: smallvec::SmallVec<[_; 4]> =
unnormalized_impl_sig.inputs_and_output.iter().map(|ty| ty.into()).collect();

View File

@ -1019,7 +1019,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
/// Returns false if the coercion creates any obligations that result in
/// errors.
pub fn can_coerce(&self, expr_ty: Ty<'tcx>, target: Ty<'tcx>) -> bool {
// FIXME(-Ztrait-solver=next): We need to structurally resolve both types here.
// FIXME(-Znext-solver): We need to structurally resolve both types here.
let source = self.resolve_vars_with_obligations(expr_ty);
debug!("coercion::can_with_predicates({:?} -> {:?})", source, target);

View File

@ -83,7 +83,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
/// version (resolve_vars_if_possible), this version will
/// also select obligations if it seems useful, in an effort
/// to get more type information.
// FIXME(-Ztrait-solver=next): A lot of the calls to this method should
// FIXME(-Znext-solver): A lot of the calls to this method should
// probably be `try_structurally_resolve_type` or `structurally_resolve_type` instead.
#[instrument(skip(self), level = "debug", ret)]
pub(in super::super) fn resolve_vars_with_obligations(&self, mut ty: Ty<'tcx>) -> Ty<'tcx> {

View File

@ -101,7 +101,7 @@ impl<'tcx> InferCtxt<'tcx> {
/// variable, then you'll get a new inference variable; if it is a
/// universally quantified variable, you get a placeholder.
///
/// FIXME(-Ztrait-solver=next): This is public because it's used by the
/// FIXME(-Znext-solver): This is public because it's used by the
/// new trait solver which has a different canonicalization routine.
/// We should somehow deduplicate all of this.
pub fn instantiate_canonical_var(

View File

@ -11,7 +11,7 @@ use rustc_middle::ty::fold::{FnMutDelegate, TypeFoldable};
use rustc_middle::ty::GenericArgKind;
use rustc_middle::ty::{self, TyCtxt};
/// FIXME(-Ztrait-solver=next): This or public because it is shared with the
/// FIXME(-Znext-solver): This or public because it is shared with the
/// new trait solver implementation. We should deduplicate canonicalization.
pub trait CanonicalExt<'tcx, V> {
/// Instantiate the wrapped value, replacing each canonical value

View File

@ -135,7 +135,7 @@ pub enum FulfillmentErrorCode<'tcx> {
CodeSubtypeError(ExpectedFound<Ty<'tcx>>, TypeError<'tcx>), // always comes from a SubtypePredicate
CodeConstEquateError(ExpectedFound<Const<'tcx>>, TypeError<'tcx>),
CodeAmbiguity {
/// Overflow reported from the new solver `-Ztrait-solver=next`, which will
/// Overflow reported from the new solver `-Znext-solver`, which will
/// be reported as an regular error as opposed to a fatal error.
overflow: bool,
},

View File

@ -5,7 +5,7 @@ use rustc_data_structures::sync::Lock;
use rustc_query_system::cache::WithDepNode;
use rustc_query_system::dep_graph::DepNodeIndex;
use rustc_session::Limit;
/// The trait solver cache used by `-Ztrait-solver=next`.
/// The trait solver cache used by `-Znext-solver`.
///
/// FIXME(@lcnr): link to some official documentation of how
/// this works.

View File

@ -62,7 +62,7 @@ pub enum TreatParams {
///
/// N.B. during deep rejection, this acts identically to `ForLookup`.
///
/// FIXME(-Ztrait-solver=next): Remove this variant and cleanup
/// FIXME(-Znext-solver): Remove this variant and cleanup
/// the code.
NextSolverLookup,
}

View File

@ -422,7 +422,7 @@ impl<'a, 'tcx> EvalCtxt<'a, 'tcx> {
self.compute_const_evaluatable_goal(Goal { param_env, predicate: ct })
}
ty::PredicateKind::ConstEquate(_, _) => {
bug!("ConstEquate should not be emitted when `-Ztrait-solver=next` is active")
bug!("ConstEquate should not be emitted when `-Znext-solver` is active")
}
ty::PredicateKind::NormalizesTo(predicate) => {
self.compute_normalizes_to_goal(Goal { param_env, predicate })

View File

@ -1,7 +1,6 @@
//! The next-generation trait solver, currently still WIP.
//!
//! As a user of rust, you can use `-Ztrait-solver=next` or `next-coherence`
//! to enable the new trait solver always, or just within coherence, respectively.
//! As a user of rust, you can use `-Znext-solver` to enable the new trait solver.
//!
//! As a developer of rustc, you shouldn't be using the new trait
//! solver without asking the trait-system-refactor-initiative, but it can
@ -248,7 +247,7 @@ impl<'tcx> EvalCtxt<'_, 'tcx> {
return None;
}
// FIXME(-Ztrait-solver=next): We should instead try to find a `Certainty::Yes` response with
// FIXME(-Znext-solver): We should instead try to find a `Certainty::Yes` response with
// a subset of the constraints that all the other responses have.
let one = responses[0];
if responses[1..].iter().all(|&resp| resp == one) {

View File

@ -445,7 +445,7 @@ impl<'tcx> assembly::GoalKind<'tcx> for TraitPredicate<'tcx> {
return Err(NoSolution);
}
// FIXME(-Ztrait-solver=next): Implement this when we get const working in the new solver
// FIXME(-Znext-solver): Implement this when we get const working in the new solver
// `Destruct` is automatically implemented for every type in
// non-const environments.

View File

@ -855,7 +855,7 @@ where
}
fn visit_ty(&mut self, ty: Ty<'tcx>) -> ControlFlow<Self::BreakTy> {
// Need to lazily normalize here in with `-Ztrait-solver=next-coherence`.
// Need to lazily normalize here in with `-Znext-solver=coherence`.
let ty = match (self.lazily_normalize_ty)(ty) {
Ok(ty) => ty,
Err(err) => return ControlFlow::Break(OrphanCheckEarlyExit::NormalizationFailure(err)),
@ -1069,7 +1069,7 @@ impl<'a, 'tcx> ProofTreeVisitor<'tcx> for AmbiguityCausesVisitor<'a, 'tcx> {
let lazily_normalize_ty = |ty: Ty<'tcx>| {
let mut fulfill_cx = <dyn TraitEngine<'tcx>>::new(infcx);
if matches!(ty.kind(), ty::Alias(..)) {
// FIXME(-Ztrait-solver=next-coherence): we currently don't
// FIXME(-Znext-solver=coherence): we currently don't
// normalize opaque types here, resulting in diverging behavior
// for TAITs.
match infcx

View File

@ -1669,7 +1669,7 @@ impl<'tcx> InferCtxtPrivExt<'tcx> for TypeErrCtxt<'_, 'tcx> {
)
.into(),
};
// FIXME(-Ztrait-solver=next): For diagnostic purposes, it would be nice
// FIXME(-Znext-solver): For diagnostic purposes, it would be nice
// to deeply normalize this type.
let normalized_term =
ocx.normalize(&obligation.cause, obligation.param_env, unnormalized_term);

View File

@ -315,7 +315,7 @@ pub fn normalize_param_env_or_error<'tcx>(
// We do not normalize types here as there is no backwards compatibility requirement
// for us to do so.
//
// FIXME(-Ztrait-solver=next): remove this hack since we have deferred projection equality
// FIXME(-Znext-solver): remove this hack since we have deferred projection equality
predicate.fold_with(&mut ConstNormalizer(tcx))
}),
)
@ -386,7 +386,7 @@ pub fn normalize_param_env_or_error<'tcx>(
/// Normalize a type and process all resulting obligations, returning any errors.
///
/// FIXME(-Ztrait-solver=next): This should be replaced by `At::deeply_normalize`
/// FIXME(-Znext-solver): This should be replaced by `At::deeply_normalize`
/// which has the same behavior with the new solver. Because using a separate
/// fulfillment context worsens caching in the old solver, `At::deeply_normalize`
/// is still lazy with the old solver as it otherwise negatively impacts perf.

View File

@ -67,7 +67,7 @@ pub trait NormalizeExt<'tcx> {
/// same goals in both a temporary and the shared context which negatively impacts
/// performance as these don't share caching.
///
/// FIXME(-Ztrait-solver=next): This has the same behavior as `traits::fully_normalize`
/// FIXME(-Znext-solver): This has the same behavior as `traits::fully_normalize`
/// in the new solver, but because of performance reasons, we currently reuse an
/// existing fulfillment context in the old solver. Once we also eagerly prove goals with
/// the old solver or have removed the old solver, remove `traits::fully_normalize` and

View File

@ -72,7 +72,7 @@ impl<'tcx> InferCtxtExt<'tcx> for InferCtxt<'tcx> {
let mut fulfill_cx = crate::solve::FulfillmentCtxt::new(self);
fulfill_cx.register_predicate_obligation(self, obligation.clone());
// True errors
// FIXME(-Ztrait-solver=next): Overflows are reported as ambig here, is that OK?
// FIXME(-Znext-solver): Overflows are reported as ambig here, is that OK?
if !fulfill_cx.select_where_possible(self).is_empty() {
Ok(EvaluationResult::EvaluatedToErr)
} else if !fulfill_cx.select_all_or_error(self).is_empty() {

View File

@ -29,7 +29,7 @@ where
ocx: &ObligationCtxt<'_, 'tcx>,
key: ParamEnvAnd<'tcx, Self>,
) -> Result<Self::QueryResponse, NoSolution> {
// FIXME(-Ztrait-solver=next): shouldn't be using old normalizer
// FIXME(-Znext-solver): shouldn't be using old normalizer
Ok(ocx.normalize(&ObligationCause::dummy(), key.param_env, key.value.value))
}
}

View File

@ -22,7 +22,7 @@ impl<'tcx> StructurallyNormalizeExt<'tcx> for At<'_, 'tcx> {
assert!(!ty.is_ty_var(), "should have resolved vars before calling");
if self.infcx.next_trait_solver() {
// FIXME(-Ztrait-solver=next): correctly handle
// FIXME(-Znext-solver): correctly handle
// overflow here.
for _ in 0..256 {
let ty::Alias(ty::Projection | ty::Inherent | ty::Weak, alias) = *ty.kind() else {

View File

@ -2543,10 +2543,10 @@ impl<'test> TestCx<'test> {
rustc.args(&["-Zpolonius"]);
}
Some(CompareMode::NextSolver) => {
rustc.args(&["-Ztrait-solver=next"]);
rustc.args(&["-Znext-solver"]);
}
Some(CompareMode::NextSolverCoherence) => {
rustc.args(&["-Ztrait-solver=next-coherence"]);
rustc.args(&["-Znext-solver=coherence"]);
}
Some(CompareMode::SplitDwarf) if self.config.target.contains("windows") => {
rustc.args(&["-Csplit-debuginfo=unpacked", "-Zunstable-options"]);

View File

@ -1,7 +1,7 @@
// Testing inference capabilities.
// check-pass
// revisions: current next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
#![feature(inherent_associated_types)]
#![allow(incomplete_features)]

View File

@ -1,6 +1,6 @@
// edition:2021
// revisions: current next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
// check-pass
#![feature(type_alias_impl_trait)]

View File

@ -1,7 +1,7 @@
// revisions: current next
//[current] known-bug: #109924
//[next] check-pass
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
// edition:2021
#![feature(return_type_notation)]

View File

@ -1,5 +1,5 @@
// revisions: current next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
#![feature(auto_traits)]
#![feature(negative_impls)]

View File

@ -1,5 +1,5 @@
// revisions: current next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
//[next] known-bug: trait-system-refactor-initiative#71
//[current] check-pass

View File

@ -1,5 +1,5 @@
// revisions: old next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
// Tests that we consider `T: Sugar + Fruit` to be ambiguous, even
// though no impls are found.

View File

@ -1,5 +1,5 @@
// revisions: old next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
// Tests that we consider `T: Sugar + Fruit` to be ambiguous, even
// though no impls are found.

View File

@ -1,5 +1,5 @@
// revisions: old next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
// Tests that we consider `Box<U>: !Sugar` to be ambiguous, even
// though we see no impl of `Sugar` for `Box`. Therefore, an overlap

View File

@ -1,5 +1,5 @@
// revisions: old next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
// Tests that we consider `Box<U>: !Sugar` to be ambiguous, even
// though we see no impl of `Sugar` for `Box`. Therefore, an overlap

View File

@ -1,5 +1,5 @@
// revisions: old next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
struct S;

View File

@ -1,5 +1,5 @@
// revisions: current next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
struct MyType;
trait MyTrait<S> {}

View File

@ -1,5 +1,5 @@
// revisions: old next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
// A regression test for #105787

View File

@ -1,5 +1,5 @@
//revisions: old next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
// A regression test for #105787

View File

@ -1,6 +1,6 @@
// check-pass
// revisions: old next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
// If we use canonical goals during trait solving we have to reevaluate
// the root goal of a cycle until we hit a fixpoint.

View File

@ -1,5 +1,5 @@
// revisions: old next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
struct Foo<const N: u8 = { 255 + 1 }>;
//~^ ERROR evaluation of constant value failed

View File

@ -3,7 +3,7 @@
// overall context for what caused the evaluation.
// revisions: old next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
const ONE: usize = 1;
const TWO: usize = 2;

View File

@ -1,5 +1,5 @@
// revisions: current next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
// check-pass
#![feature(coroutines, coroutine_trait, coroutine_clone)]

View File

@ -1,6 +1,6 @@
// revisions: next old
//compile-flags: --edition 2024 -Zunstable-options
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
// check-pass
#![feature(gen_blocks)]

View File

@ -1,6 +1,6 @@
// revisions: next old
//compile-flags: --edition 2024 -Zunstable-options
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
// run-pass
#![feature(gen_blocks)]

View File

@ -1,5 +1,5 @@
// revisions: current next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
// run-pass
#![feature(coroutines, coroutine_trait)]

View File

@ -1,5 +1,5 @@
// revisions: current next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
#![feature(coroutines)]

View File

@ -1,7 +1,7 @@
// run-pass
// revisions: current next
//[current] compile-flags: -C opt-level=0
//[next] compile-flags: -Ztrait-solver=next -C opt-level=0
//[next] compile-flags: -Znext-solver -C opt-level=0
#![feature(dyn_star)]
#![allow(incomplete_features)]

View File

@ -1,5 +1,5 @@
// revisions: current next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
#![feature(dyn_star)]
#![allow(incomplete_features)]

View File

@ -1,7 +1,7 @@
// revisions: current
// incremental
// FIXME(-Ztrait-solver=next): THis currently results in unstable query results:
// FIXME(-Znext-solver): THis currently results in unstable query results:
// `normalizes-to(opaque, opaque)` changes from `Maybe(Ambiguous)` to `Maybe(Overflow)`
// once the hidden type of the opaque is already defined to be itself.

View File

@ -1,5 +1,5 @@
// revisions: old next
//[next] compile-flags: -Ztrait-solver=next-coherence
//[next] compile-flags: -Znext-solver=coherence
#![feature(coerce_unsized)]
#![feature(unsize)]

View File

@ -1,5 +1,5 @@
// revisions: current next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
fn changer<'a>(mut things: Box<dyn Iterator<Item=&'a mut u8>>) {
for item in *things { *item = 0 }
@ -13,7 +13,7 @@ fn changer<'a>(mut things: Box<dyn Iterator<Item=&'a mut u8>>) {
//[next]~| ERROR the type `Option<<<dyn Iterator<Item = &'a mut u8> as IntoIterator>::IntoIter as Iterator>::Item>` is not well-formed
//[next]~| ERROR the size for values of type `<<dyn Iterator<Item = &'a mut u8> as IntoIterator>::IntoIter as Iterator>::Item` cannot be known at compilation time
//[next]~| ERROR type `<<dyn Iterator<Item = &'a mut u8> as IntoIterator>::IntoIter as Iterator>::Item` cannot be dereferenced
// FIXME(-Ztrait-solver=next): these error messages are horrible and have to be
// FIXME(-Znext-solver): these error messages are horrible and have to be
// improved before we stabilize the new solver.
}

View File

@ -1,5 +1,5 @@
// revisions: current next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
trait A {
type B<'b>;

View File

@ -1,6 +1,6 @@
// run-pass
// revisions: old next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
#![allow(coherence_leak_check)]
trait Trait: Sized {

View File

@ -1,5 +1,5 @@
// revisions: classic next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
//[next] check-pass
fn ice()

View File

@ -1,7 +1,7 @@
// ignore-tidy-linelength
// edition:2021
// revisions: classic next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
//[next] check-pass
//[classic] known-bug: #112347
//[classic] build-fail

View File

@ -1,5 +1,5 @@
// revisions: old next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
//[old] check-pass
//[next] known-bug: #109764

View File

@ -1,5 +1,5 @@
// revisions: old next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
// Tests that type alias impls traits do not leak auto-traits for
// the purposes of coherence checking

View File

@ -1,5 +1,5 @@
// revisions: current next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
// check-pass
use std::path::Path;

View File

@ -1,6 +1,6 @@
// revisions: current next
// compile-flags: -Zverbose
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
// normalize-stderr-test "DefId\([^\)]+\)" -> "DefId(..)"
#![feature(rustc_attrs)]

View File

@ -1,6 +1,6 @@
// check-pass
// revisions: current next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
fn main() {

View File

@ -1,5 +1,5 @@
// check-pass
// compile-flags: -Ztrait-solver=next
// compile-flags: -Znext-solver
fn foo<'a: 'a>(x: &'a Vec<i32>) -> impl Sized {
()

View File

@ -1,5 +1,5 @@
// revisions: current next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
// edition:2021
mod hyper {

View File

@ -1,5 +1,5 @@
// revisions: current next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
#![feature(coroutines, coroutine_trait)]
use std::ops::{Coroutine, CoroutineState};

View File

@ -1,6 +1,6 @@
// build-pass
// revisions: current next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
fn test() -> Option<impl Sized> {
Some("")

View File

@ -1,5 +1,5 @@
// revisions: current next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
//[next] check-pass
#![feature(type_alias_impl_trait)]

View File

@ -1,5 +1,5 @@
// revisions: current next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
#![feature(type_alias_impl_trait)]
type A = impl Foo; //[current]~ ERROR unconstrained opaque type

View File

@ -1,5 +1,5 @@
// revisions: current next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
//[next] check-pass
#![feature(type_alias_impl_trait)]

View File

@ -1,5 +1,5 @@
// A test exploiting the bug behind #25860 except with
// implied trait bounds which currently don't exist without `-Ztrait-solver=chalk`.
// implied trait bounds which currently don't exist.
use std::marker::PhantomData;
struct Foo<'a, 'b, T>(PhantomData<(&'a (), &'b (), T)>)
where

View File

@ -1,6 +1,6 @@
// check-pass
// revisions: current next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
#![allow(non_upper_case_globals)]
#![allow(dead_code)]

View File

@ -1,7 +1,7 @@
// check-pass
// pretty-expanded FIXME #23616
// revisions: current next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
use std::slice;

View File

@ -1,6 +1,6 @@
// run-pass
// revisions: current next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
use std::ops::Index;

View File

@ -1,6 +1,6 @@
// check-pass
// revisions: current next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
#![feature(lazy_type_alias)]
//~^ WARN the feature `lazy_type_alias` is incomplete

View File

@ -1,7 +1,7 @@
// check that the `for<T> T: From<!>` impl is reserved
// revisions: current next
//[next] compile-flags: -Ztrait-solver=next-coherence
//[next] compile-flags: -Znext-solver=coherence
#![feature(never_type)]

View File

@ -1,6 +1,6 @@
// check-pass
// revisions: current next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
use std::ops::Deref;

View File

@ -1,6 +1,6 @@
// check-pass
// revisions: current next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
trait Foo {
type Bar<'a>

View File

@ -1,6 +1,6 @@
// run-pass
// revisions: current next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
#![allow(unused_must_use)]
#![feature(c_unwind)]

View File

@ -1,7 +1,7 @@
// Check that we can manually implement an object-unsafe trait for its trait object.
// revisions: current next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
// run-pass
#![feature(object_safe_for_dispatch)]

View File

@ -1,6 +1,6 @@
// revisions: classic coherence next
//[next] compile-flags: -Ztrait-solver=next
//[coherence] compile-flags: -Ztrait-solver=next-coherence
//[next] compile-flags: -Znext-solver
//[coherence] compile-flags: -Znext-solver=coherence
//[classic] check-pass
//[classic] known-bug: #105782

View File

@ -1,5 +1,5 @@
// revisions: current next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
#![feature(rustc_attrs)]

View File

@ -1,6 +1,6 @@
// run-pass
// revisions: classic next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
trait Foo: Fn(i32) -> i32 + Send {}

View File

@ -1,5 +1,5 @@
// revisions: old next
//[next] compile-flags: -Ztrait-solver=next
//[next] compile-flags: -Znext-solver
// run-pass
// A test for https://github.com/rust-lang/trait-system-refactor-initiative/issues/45.

View File

@ -1,4 +1,4 @@
// compile-flags: -Ztrait-solver=next
// compile-flags: -Znext-solver
// Makes sure that alias bounds are not unsound!

View File

@ -1,5 +1,5 @@
// check-pass
// compile-flags: -Ztrait-solver=next
// compile-flags: -Znext-solver
trait Foo {
type Gat<'a>

View File

@ -1,5 +1,5 @@
// check-pass
// compile-flags: -Ztrait-solver=next
// compile-flags: -Znext-solver
// regression test for trait-system-refactor-initiative#68
trait Identity {
type Assoc: ?Sized;

View File

@ -1,5 +1,5 @@
// check-pass
// compile-flags: -Ztrait-solver=next
// compile-flags: -Znext-solver
fn test<T: Iterator>(x: T::Item) -> impl Sized {
x

View File

@ -1,4 +1,4 @@
// compile-flags: -Ztrait-solver=next
// compile-flags: -Znext-solver
// check-pass
trait Trait {

View File

@ -1,5 +1,5 @@
// check-pass
// compile-flags: -Ztrait-solver=next
// compile-flags: -Znext-solver
// check that a goal such as `alias-eq(<T as TraitB>::Assoc<bool>, <T as TraitB>::Assoc<?0>)`
// succeeds with a constraint that `?0 = bool`

View File

@ -1,4 +1,4 @@
// compile-flags: -Ztrait-solver=next
// compile-flags: -Znext-solver
// check-pass
// (should not pass, should be turned into a coherence-only test)

View File

@ -1,5 +1,5 @@
// check-pass
// compile-flags: -Ztrait-solver=next
// compile-flags: -Znext-solver
// test that the new solver can handle `alias-eq(<i32 as TraitB>::Assoc, u32)`

View File

@ -1,4 +1,4 @@
// compile-flags: -Ztrait-solver=next
// compile-flags: -Znext-solver
// check that a `alias-eq(<?a as TraitB>::Assoc, <?b as TraitB>::Assoc)` goal fails
// during coherence. We must not incorrectly constrain `?a` and `?b` to be

View File

@ -1,4 +1,4 @@
// compile-flags: -Ztrait-solver=next
// compile-flags: -Znext-solver
// check-pass
fn has_default<const N: usize>() where [(); N]: Default {}

View File

@ -1,4 +1,4 @@
// compile-flags: -Ztrait-solver=next
// compile-flags: -Znext-solver
// check-pass
// Checks that we do not get ambiguity by considering an impl

View File

@ -1,4 +1,4 @@
// compile-flags: -Ztrait-solver=next
// compile-flags: -Znext-solver
// In the new solver, we are trying to select `<?0 as Iterator>::Item: Debug`,
// which, naively can be unified with every impl of `Debug` if we're not careful.

View File

@ -1,4 +1,4 @@
// compile-flags: -Ztrait-solver=next
// compile-flags: -Znext-solver
// edition: 2021
// revisions: pass fail
//[pass] check-pass

View File

@ -1,4 +1,4 @@
// compile-flags: -Ztrait-solver=next
// compile-flags: -Znext-solver
// edition: 2021
// revisions: pass fail
//[pass] check-pass

View File

@ -1,4 +1,4 @@
// compile-flags: -Ztrait-solver=next
// compile-flags: -Znext-solver
use std::collections::HashMap;

View File

@ -1,4 +1,4 @@
// compile-flags: -Ztrait-solver=next
// compile-flags: -Znext-solver
#![feature(fn_traits)]
#![feature(unboxed_closures)]

View File

@ -1,4 +1,4 @@
// compile-flags: -Ztrait-solver=next
// compile-flags: -Znext-solver
// check-pass
trait Mirror {

View File

@ -1,5 +1,5 @@
// check-pass
// compile-flags: -Ztrait-solver=next
// compile-flags: -Znext-solver
trait Mirror {
type Item;

View File

@ -1,4 +1,4 @@
// compile-flags: -Ztrait-solver=next
// compile-flags: -Znext-solver
// check-pass
#![feature(effects)]

View File

@ -1,4 +1,4 @@
// compile-flags: -Ztrait-solver=next
// compile-flags: -Znext-solver
// check-pass
fn main() {

View File

@ -1,4 +1,4 @@
// compile-flags: -Ztrait-solver=next
// compile-flags: -Znext-solver
// check-pass
fn foo(i: isize) -> isize { i + 1 }

View File

@ -1,4 +1,4 @@
// compile-flags: -Ztrait-solver=next
// compile-flags: -Znext-solver
// check-pass
fn main() {

Some files were not shown because too many files have changed in this diff Show More