Skip to content

eagerly normalize param_envs, treat them as fully normalized#156698

Closed
lcnr wants to merge 8 commits into
rust-lang:mainfrom
lcnr:param_env-norm
Closed

eagerly normalize param_envs, treat them as fully normalized#156698
lcnr wants to merge 8 commits into
rust-lang:mainfrom
lcnr:param_env-norm

Conversation

@lcnr

@lcnr lcnr commented May 18, 2026

Copy link
Copy Markdown
Contributor

@rustbot

rustbot commented May 18, 2026

Copy link
Copy Markdown
Collaborator

Some changes occurred to the core trait solver

cc @rust-lang/initiative-trait-system-refactor

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver) labels May 18, 2026
@rustbot

rustbot commented May 18, 2026

Copy link
Copy Markdown
Collaborator

BoxyUwU is currently at their maximum review capacity.
They may take a while to respond.

@lcnr lcnr force-pushed the param_env-norm branch from b390bb0 to 92ed2df Compare May 18, 2026 09:14
@rustbot

rustbot commented May 18, 2026

Copy link
Copy Markdown
Collaborator

This PR was rebased onto a different main commit. Here's a range-diff highlighting what actually changed.

Rebasing is a normal part of keeping PRs up to date, so no action is needed—this note is just to help reviewers.

@lcnr

lcnr commented May 18, 2026

Copy link
Copy Markdown
Contributor Author

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@rustbot rustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label May 18, 2026
@rust-bors

This comment has been minimized.

rust-bors Bot pushed a commit that referenced this pull request May 18, 2026
eagerly normalize param_envs, treat them as fully normalized
@rust-log-analyzer

This comment has been minimized.

@rust-bors

rust-bors Bot commented May 18, 2026

Copy link
Copy Markdown
Contributor

☀️ Try build successful (CI)
Build commit: 7df162e (7df162ed112eb97a80f6d15b4639c0001004d2d6, parent: 5ea817c65e4896167300b7d2550781b98da9901a)

@rust-timer

This comment has been minimized.

@rust-timer

Copy link
Copy Markdown
Collaborator

Finished benchmarking commit (7df162e): comparison URL.

Overall result: ❌✅ regressions and improvements - please read:

Benchmarking means the PR may be perf-sensitive. It's automatically marked not fit for rolling up. Overriding is possible but disadvised: it risks changing compiler perf.

Next, please: If you can, justify the regressions found in this try perf run in writing along with @rustbot label: +perf-regression-triaged. If not, fix the regressions and do another perf run. Neutral or positive results will clear the label automatically.

@bors rollup=never
@rustbot label: -S-waiting-on-perf +perf-regression

Instruction count

Our most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.

mean range count
Regressions ❌
(primary)
1.3% [1.0%, 2.0%] 7
Regressions ❌
(secondary)
7.6% [0.7%, 53.8%] 23
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-2.6% [-2.6%, -2.6%] 1
All ❌✅ (primary) 1.3% [1.0%, 2.0%] 7

Max RSS (memory usage)

Results (primary 1.5%, secondary -2.8%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
1.9% [1.8%, 2.1%] 5
Regressions ❌
(secondary)
3.7% [1.3%, 6.1%] 2
Improvements ✅
(primary)
-0.5% [-0.5%, -0.5%] 1
Improvements ✅
(secondary)
-4.0% [-15.7%, -1.2%] 11
All ❌✅ (primary) 1.5% [-0.5%, 2.1%] 6

Cycles

Results (primary 2.9%, secondary 14.3%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
2.9% [2.9%, 2.9%] 1
Regressions ❌
(secondary)
19.2% [2.4%, 49.7%] 7
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-2.8% [-3.5%, -2.1%] 2
All ❌✅ (primary) 2.9% [2.9%, 2.9%] 1

Binary size

This perf run didn't have relevant results for this metric.

Bootstrap: 511.688s -> 513.115s (0.28%)
Artifact size: 400.54 MiB -> 400.86 MiB (0.08%)

@rustbot rustbot added perf-regression Performance regression. and removed S-waiting-on-perf Status: Waiting on a perf run to be completed. labels May 18, 2026
if let Some(projection_pred) = assumption.as_projection_clause()
&& projection_pred.item_def_id() == goal.predicate.def_id()
&& DeepRejectCtxt::relate_rigid_rigid(ecx.cx()).args_may_unify(
&& DeepRejectCtxt::relate_fully_normalized(ecx.cx()).args_may_unify(

@inq inq May 18, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This rejects constructor fn-items whose signature carries an unnormalized projection:

use std::borrow::Cow;
fn main() { let _ = Some(String::new()).map(Cow::<str>::Owned); }

=> E0271 on this branch (clean on baseline & #156665 )

trait_goals::fast_reject_assumption was kept relate_rigid_rigid
but normalizes_to is switched to relate_fully_normalized --> assymetry?

View changes since the review

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ye, by accident. only want this change when fast_rejecting param_env candidates

@lcnr

lcnr commented May 18, 2026

Copy link
Copy Markdown
Contributor Author

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@rustbot rustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label May 18, 2026
@rust-bors

This comment has been minimized.

rust-bors Bot pushed a commit that referenced this pull request May 18, 2026
eagerly normalize param_envs, treat them as fully normalized
@rust-log-analyzer

This comment has been minimized.

@rust-bors rust-bors Bot added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels May 18, 2026
@rust-bors

rust-bors Bot commented May 18, 2026

Copy link
Copy Markdown
Contributor

💔 Test for fc6e1e8 failed: CI. Failed job:

@rust-log-analyzer

This comment has been minimized.

@lcnr

lcnr commented May 18, 2026

Copy link
Copy Markdown
Contributor Author

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@rust-bors

This comment has been minimized.

rust-bors Bot pushed a commit that referenced this pull request May 18, 2026
eagerly normalize param_envs, treat them as fully normalized
@rust-log-analyzer

Copy link
Copy Markdown
Collaborator

The job aarch64-gnu-llvm-21-1 failed! Check out the build log: (web) (plain enhanced) (plain)

Click to see the possible cause of the failure (guessed by this bot)
---- [ui] tests/ui/impl-trait/in-trait/false-positive-predicate-entailment-error.rs#next stdout ----

error in revision `next`: test compilation failed although it shouldn't!
status: exit status: 1
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/impl-trait/in-trait/false-positive-predicate-entailment-error.rs" "-Zthreads=1" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Z" "ignore-directory-in-diagnostics-source-blocks=/cargo" "-Z" "ignore-directory-in-diagnostics-source-blocks=/checkout/vendor" "--sysroot" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2" "--target=aarch64-unknown-linux-gnu" "--cfg" "next" "--check-cfg" "cfg(test,FALSE,current,next)" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zdeduplicate-diagnostics=no" "-Zwrite-long-types-to-disk=no" "-Cstrip=debuginfo" "--emit" "metadata" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/impl-trait/in-trait/false-positive-predicate-entailment-error.next" "-A" "unused" "-W" "unused_attributes" "-A" "internal_features" "-A" "incomplete_features" "-A" "unused_parens" "-A" "unused_braces" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/aarch64-unknown-linux-gnu/native/rust-test-helpers" "-Znext-solver"
stdout: none
--- stderr -------------------------------
error[E0277]: the trait bound `F: MyFn<i32>` is not satisfied
##[error]  --> /checkout/tests/ui/impl-trait/in-trait/false-positive-predicate-entailment-error.rs:36:5
   |
LL | /     fn autobatch<F>(self) -> impl Trait
...  |
LL | |     where
LL | |         F: Callback<Self::CallbackArg>,
   | |_______________________________________^ the trait `MyFn<i32>` is not implemented for `F`
   |
note: required for `F` to implement `Callback<i32>`
  --> /checkout/tests/ui/impl-trait/in-trait/false-positive-predicate-entailment-error.rs:14:21
   |
LL | impl<A, F: MyFn<A>> Callback<A> for F {
   |            -------  ^^^^^^^^^^^     ^
   |            |
   |            unsatisfied trait bound introduced here
help: consider further restricting type parameter `F` with trait `MyFn`
   |
LL |         F: Callback<Self::CallbackArg> + MyFn<i32>,
   |                                        +++++++++++

error[E0277]: the trait bound `F: MyFn<i32>` is not satisfied
##[error]  --> /checkout/tests/ui/impl-trait/in-trait/false-positive-predicate-entailment-error.rs:36:5
   |
LL | /     fn autobatch<F>(self) -> impl Trait
...  |
LL | |     where
LL | |         F: Callback<Self::CallbackArg>,
   | |_______________________________________^ the trait `MyFn<i32>` is not implemented for `F`
   |
note: required for `F` to implement `Callback<i32>`
  --> /checkout/tests/ui/impl-trait/in-trait/false-positive-predicate-entailment-error.rs:14:21
   |
LL | impl<A, F: MyFn<A>> Callback<A> for F {
   |            -------  ^^^^^^^^^^^     ^
   |            |
   |            unsatisfied trait bound introduced here
   = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
help: consider further restricting type parameter `F` with trait `MyFn`
   |
LL |         F: Callback<Self::CallbackArg> + MyFn<i32>,
   |                                        +++++++++++

error[E0277]: the trait bound `F: Callback<i32>` is not satisfied
##[error]  --> /checkout/tests/ui/impl-trait/in-trait/false-positive-predicate-entailment-error.rs:42:12
   |
LL |         F: Callback<Self::CallbackArg>,
   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `MyFn<i32>` is not implemented for `F`
   |
note: required for `F` to implement `Callback<i32>`
  --> /checkout/tests/ui/impl-trait/in-trait/false-positive-predicate-entailment-error.rs:14:21
   |
LL | impl<A, F: MyFn<A>> Callback<A> for F {
   |            -------  ^^^^^^^^^^^     ^
   |            |
   |            unsatisfied trait bound introduced here
note: the requirement `F: Callback<i32>` appears on the `impl`'s method `autobatch` but not on the corresponding trait's method
  --> /checkout/tests/ui/impl-trait/in-trait/false-positive-predicate-entailment-error.rs:25:8
   |
LL | trait ChannelSender {
   |       ------------- in this trait
...
LL |     fn autobatch<F>(self) -> impl Trait
   |        ^^^^^^^^^ this trait's method doesn't have the requirement `F: Callback<i32>`
help: consider further restricting type parameter `F` with trait `MyFn`
   |
LL |         F: Callback<Self::CallbackArg> + MyFn<i32>,
   |                                        +++++++++++

error: the type `impl Trait` is not well-formed
##[error]  --> /checkout/tests/ui/impl-trait/in-trait/false-positive-predicate-entailment-error.rs:36:30
   |
LL |     fn autobatch<F>(self) -> impl Trait
   |                              ^^^^^^^^^^

error[E0277]: the trait bound `F: Callback<i32>` is not satisfied
##[error]  --> /checkout/tests/ui/impl-trait/in-trait/false-positive-predicate-entailment-error.rs:42:12
   |
LL |         F: Callback<Self::CallbackArg>,
   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `MyFn<i32>` is not implemented for `F`
   |
note: required for `F` to implement `Callback<i32>`
  --> /checkout/tests/ui/impl-trait/in-trait/false-positive-predicate-entailment-error.rs:14:21
   |
LL | impl<A, F: MyFn<A>> Callback<A> for F {
   |            -------  ^^^^^^^^^^^     ^
   |            |
   |            unsatisfied trait bound introduced here
note: the requirement `F: Callback<i32>` appears on the `impl`'s method `autobatch` but not on the corresponding trait's method
  --> /checkout/tests/ui/impl-trait/in-trait/false-positive-predicate-entailment-error.rs:25:8
   |
LL | trait ChannelSender {
   |       ------------- in this trait
...
LL |     fn autobatch<F>(self) -> impl Trait
   |        ^^^^^^^^^ this trait's method doesn't have the requirement `F: Callback<i32>`
   = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
help: consider further restricting type parameter `F` with trait `MyFn`
   |
LL |         F: Callback<Self::CallbackArg> + MyFn<i32>,
   |                                        +++++++++++

error[E0277]: the trait bound `F: MyFn<i32>` is not satisfied
##[error]  --> /checkout/tests/ui/impl-trait/in-trait/false-positive-predicate-entailment-error.rs:36:5
   |
LL | /     fn autobatch<F>(self) -> impl Trait
...  |
LL | |     where
LL | |         F: Callback<Self::CallbackArg>,
   | |_______________________________________^ the trait `MyFn<i32>` is not implemented for `F`
   |
note: required for `F` to implement `Callback<i32>`
  --> /checkout/tests/ui/impl-trait/in-trait/false-positive-predicate-entailment-error.rs:14:21
   |
LL | impl<A, F: MyFn<A>> Callback<A> for F {
   |            -------  ^^^^^^^^^^^     ^
   |            |
   |            unsatisfied trait bound introduced here
   = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
help: consider further restricting type parameter `F` with trait `MyFn`
   |
LL |         F: Callback<Self::CallbackArg> + MyFn<i32>,
   |                                        +++++++++++

error[E0276]: impl has stricter requirements than trait
##[error]  --> /checkout/tests/ui/impl-trait/in-trait/false-positive-predicate-entailment-error.rs:36:5
   |
LL | /     fn autobatch<F>(self) -> impl Trait
LL | |     where
LL | |         F: Callback<Self::CallbackArg>;
   | |_______________________________________- definition of `autobatch` from trait
...
LL | /     fn autobatch<F>(self) -> impl Trait
...  |
LL | |     where
LL | |         F: Callback<Self::CallbackArg>,
   | |_______________________________________^ impl has extra requirement `impl Trait well-formed`

error[E0277]: the trait bound `F: MyFn<i32>` is not satisfied
##[error]  --> /checkout/tests/ui/impl-trait/in-trait/false-positive-predicate-entailment-error.rs:36:30
   |
LL |     fn autobatch<F>(self) -> impl Trait
   |                              ^^^^^^^^^^ the trait `MyFn<i32>` is not implemented for `F`
   |
note: required for `F` to implement `Callback<i32>`
  --> /checkout/tests/ui/impl-trait/in-trait/false-positive-predicate-entailment-error.rs:14:21
   |
LL | impl<A, F: MyFn<A>> Callback<A> for F {
   |            -------  ^^^^^^^^^^^     ^
   |            |
   |            unsatisfied trait bound introduced here

error[E0277]: the trait bound `F: Callback<i32>` is not satisfied
##[error]  --> /checkout/tests/ui/impl-trait/in-trait/false-positive-predicate-entailment-error.rs:27:12
   |
LL |         F: Callback<Self::CallbackArg>;
   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `MyFn<i32>` is not implemented for `F`
   |
note: required for `F` to implement `Callback<i32>`
  --> /checkout/tests/ui/impl-trait/in-trait/false-positive-predicate-entailment-error.rs:14:21
   |
LL | impl<A, F: MyFn<A>> Callback<A> for F {
   |            -------  ^^^^^^^^^^^     ^
   |            |
   |            unsatisfied trait bound introduced here

error[E0277]: the trait bound `F: MyFn<i32>` is not satisfied
##[error]  --> /checkout/tests/ui/impl-trait/in-trait/false-positive-predicate-entailment-error.rs:36:5
   |
LL | /     fn autobatch<F>(self) -> impl Trait
...  |
LL | |     where
LL | |         F: Callback<Self::CallbackArg>,
   | |_______________________________________^ the trait `MyFn<i32>` is not implemented for `F`
   |
note: required for `F` to implement `Callback<i32>`
  --> /checkout/tests/ui/impl-trait/in-trait/false-positive-predicate-entailment-error.rs:14:21
   |
LL | impl<A, F: MyFn<A>> Callback<A> for F {
   |            -------  ^^^^^^^^^^^     ^
   |            |
   |            unsatisfied trait bound introduced here
   = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
help: consider further restricting type parameter `F` with trait `MyFn`
   |
LL |         F: Callback<Self::CallbackArg> + MyFn<i32>,
   |                                        +++++++++++

error[E0277]: the trait bound `F: MyFn<i32>` is not satisfied
##[error]  --> /checkout/tests/ui/impl-trait/in-trait/false-positive-predicate-entailment-error.rs:42:12
   |
LL |         F: Callback<Self::CallbackArg>,
   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `MyFn<i32>` is not implemented for `F`
   |
note: required by a bound in `Callback`
  --> /checkout/tests/ui/impl-trait/in-trait/false-positive-predicate-entailment-error.rs:10:20
   |
LL | trait Callback<A>: MyFn<A, Output = Self::Ret> {
   |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `Callback`
help: consider further restricting type parameter `F` with trait `MyFn`
   |
LL |         F: Callback<Self::CallbackArg> + MyFn<i32>,
   |                                        +++++++++++

error: the type `impl Trait` is not well-formed
##[error]  --> /checkout/tests/ui/impl-trait/in-trait/false-positive-predicate-entailment-error.rs:36:30
   |
LL |     fn autobatch<F>(self) -> impl Trait
   |                              ^^^^^^^^^^
   |
   = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`

error: aborting due to 12 previous errors
---

+ error[E0284]: type annotations needed: cannot normalize `<&T as Foo>::Item`
+   --> $DIR/next-solver-region-resolution.rs:18:1
+    |
+ LL | / impl<'a, T> Foo for &T
+ LL | |
+ LL | | where
+ LL | |     Self::Item: Baz,
+    | |____________________^ cannot normalize `<&T as Foo>::Item`
+ 
+ error[E0284]: type annotations needed: cannot normalize `<&'a T as Foo>::Item`
+   --> $DIR/next-solver-region-resolution.rs:12:1
+    |
+ LL | / impl<'a, T> Foo for &'a T
+ LL | | where
+ LL | |     Self::Item: 'a,
+    | |___________________^ cannot normalize `<&'a T as Foo>::Item`
+ 
1 error[E0119]: conflicting implementations of trait `Foo` for type `&_`
2   --> $DIR/next-solver-region-resolution.rs:18:1
3    |

---
-   --> /checkout/tests/ui/specialization/min_specialization/next-solver-region-resolution.rs:12:1
+ error[E0284]: type annotations needed: cannot normalize `<&T as Foo>::Item`
+   --> $DIR/next-solver-region-resolution.rs:18:1
+    |
+ LL | / impl<'a, T> Foo for &T
+ LL | |
+ LL | | where
+ LL | |     Self::Item: Baz,
+    | |____________________^ cannot normalize `<&T as Foo>::Item`
+ 
+ error[E0284]: type annotations needed: cannot normalize `<&'a T as Foo>::Item`
+   --> $DIR/next-solver-region-resolution.rs:12:1
+    |
+ LL | / impl<'a, T> Foo for &'a T
+ LL | | where
+ LL | |     Self::Item: 'a,
+    | |___________________^ cannot normalize `<&'a T as Foo>::Item`
+ 
+ error: aborting due to 3 previous errors
+ Some errors have detailed explanations: E0119, E0284.
+ For more information about an error, try `rustc --explain E0119`.


The actual stderr differed from the expected stderr
To update references, rerun the tests and pass the `--bless` flag
To only update this specific test, also pass `--test-args specialization/min_specialization/next-solver-region-resolution.rs`

error: 1 errors occurred comparing output.
status: exit status: 1
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/specialization/min_specialization/next-solver-region-resolution.rs" "-Zthreads=1" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Z" "ignore-directory-in-diagnostics-source-blocks=/cargo" "-Z" "ignore-directory-in-diagnostics-source-blocks=/checkout/vendor" "--sysroot" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2" "--target=aarch64-unknown-linux-gnu" "--check-cfg" "cfg(test,FALSE)" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zdeduplicate-diagnostics=no" "-Zwrite-long-types-to-disk=no" "-Cstrip=debuginfo" "--emit" "metadata" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/specialization/min_specialization/next-solver-region-resolution" "-A" "unused" "-W" "unused_attributes" "-A" "internal_features" "-A" "incomplete_features" "-A" "unused_parens" "-A" "unused_braces" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/aarch64-unknown-linux-gnu/native/rust-test-helpers" "-Znext-solver=globally"
stdout: none
--- stderr -------------------------------
error[E0284]: type annotations needed: cannot normalize `<&T as Foo>::Item`
##[error]  --> /checkout/tests/ui/specialization/min_specialization/next-solver-region-resolution.rs:18:1
   |
LL | / impl<'a, T> Foo for &T
LL | | //~^ ERROR: conflicting implementations of trait `Foo` for type `&_`
LL | | where
LL | |     Self::Item: Baz,
   | |____________________^ cannot normalize `<&T as Foo>::Item`

error[E0284]: type annotations needed: cannot normalize `<&'a T as Foo>::Item`
##[error]  --> /checkout/tests/ui/specialization/min_specialization/next-solver-region-resolution.rs:12:1
   |
LL | / impl<'a, T> Foo for &'a T
LL | | where
LL | |     Self::Item: 'a,
   | |___________________^ cannot normalize `<&'a T as Foo>::Item`

error[E0119]: conflicting implementations of trait `Foo` for type `&_`
##[error]  --> /checkout/tests/ui/specialization/min_specialization/next-solver-region-resolution.rs:18:1
   |
LL | / impl<'a, T> Foo for &'a T
---
Saved the actual stderr to `/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/traits/const-traits/unsatisfied-const-trait-bound/unsatisfied-const-trait-bound.stderr`
diff of stderr:

42    |
43 LL | fn accept0<T: Trait>(_: Container<{ T::make() }>) {}
44    |                                   ^^^^^^^^^^^^^
+ note: ...which requires computing normalized predicates of `accept0::{constant#0}`...
+   --> $DIR/unsatisfied-const-trait-bound.rs:28:35
+    |
+ LL | fn accept0<T: Trait>(_: Container<{ T::make() }>) {}
+    |                                   ^^^^^^^^^^^^^
45    = note: ...which again requires evaluating type-level constant, completing the cycle
- note: cycle used when checking that `accept0` is well-formed
+ note: cycle used when computing normalized predicates of `accept0`
47   --> $DIR/unsatisfied-const-trait-bound.rs:28:35
48    |
49 LL | fn accept0<T: Trait>(_: Container<{ T::make() }>) {}

72 LL | const fn accept1<T: [const] Trait>(_: Container<{ T::make() }>) {}
73    |                                                 ^^^^^^^^^^^^^
74 note: ...which requires type-checking `accept1::{constant#0}`...
+   --> $DIR/unsatisfied-const-trait-bound.rs:32:49
+    |
+ LL | const fn accept1<T: [const] Trait>(_: Container<{ T::make() }>) {}
+    |                                                 ^^^^^^^^^^^^^
+ note: ...which requires computing normalized predicates of `accept1::{constant#0}`...
75   --> $DIR/unsatisfied-const-trait-bound.rs:32:49
76    |
77 LL | const fn accept1<T: [const] Trait>(_: Container<{ T::make() }>) {}

Note: some mismatched output was normalized before being compared
-   --> /checkout/tests/ui/traits/const-traits/unsatisfied-const-trait-bound.rs:28:35
-   --> /checkout/tests/ui/traits/const-traits/unsatisfied-const-trait-bound.rs:32:49
+ note: ...which requires computing normalized predicates of `accept0::{constant#0}`...
+   --> $DIR/unsatisfied-const-trait-bound.rs:28:35
+    |
+ LL | fn accept0<T: Trait>(_: Container<{ T::make() }>) {}
+    |                                   ^^^^^^^^^^^^^
+ note: cycle used when computing normalized predicates of `accept0`
+   --> $DIR/unsatisfied-const-trait-bound.rs:32:49
+    |
+ LL | const fn accept1<T: [const] Trait>(_: Container<{ T::make() }>) {}
+    |                                                 ^^^^^^^^^^^^^
+ note: ...which requires computing normalized predicates of `accept1::{constant#0}`...


The actual stderr differed from the expected stderr
To update references, rerun the tests and pass the `--bless` flag
To only update this specific test, also pass `--test-args traits/const-traits/unsatisfied-const-trait-bound.rs`

error: 1 errors occurred comparing output.
status: exit status: 1
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/traits/const-traits/unsatisfied-const-trait-bound.rs" "-Zthreads=1" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Z" "ignore-directory-in-diagnostics-source-blocks=/cargo" "-Z" "ignore-directory-in-diagnostics-source-blocks=/checkout/vendor" "--sysroot" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2" "--target=aarch64-unknown-linux-gnu" "--check-cfg" "cfg(test,FALSE)" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zdeduplicate-diagnostics=no" "-Zwrite-long-types-to-disk=no" "-Cstrip=debuginfo" "--emit" "metadata" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/traits/const-traits/unsatisfied-const-trait-bound" "-A" "unused" "-W" "unused_attributes" "-A" "internal_features" "-A" "incomplete_features" "-A" "unused_parens" "-A" "unused_braces" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/aarch64-unknown-linux-gnu/native/rust-test-helpers" "-Znext-solver"
stdout: none
--- stderr -------------------------------
error: `-Znext-solver=globally` and `generic_const_exprs` are incompatible, using them at the same time is not allowed
##[error]  --> /checkout/tests/ui/traits/const-traits/unsatisfied-const-trait-bound.rs:5:30
   |
---

error[E0391]: cycle detected when evaluating type-level constant
##[error]  --> /checkout/tests/ui/traits/const-traits/unsatisfied-const-trait-bound.rs:28:35
   |
LL | fn accept0<T: Trait>(_: Container<{ T::make() }>) {}
   |                                   ^^^^^^^^^^^^^
   |
note: ...which requires const-evaluating + checking `accept0::{constant#0}`...
  --> /checkout/tests/ui/traits/const-traits/unsatisfied-const-trait-bound.rs:28:35
   |
LL | fn accept0<T: Trait>(_: Container<{ T::make() }>) {}
   |                                   ^^^^^^^^^^^^^
note: ...which requires checking if `accept0::{constant#0}` is a trivial const...
  --> /checkout/tests/ui/traits/const-traits/unsatisfied-const-trait-bound.rs:28:35
   |
LL | fn accept0<T: Trait>(_: Container<{ T::make() }>) {}
   |                                   ^^^^^^^^^^^^^
note: ...which requires building MIR for `accept0::{constant#0}`...
  --> /checkout/tests/ui/traits/const-traits/unsatisfied-const-trait-bound.rs:28:35
   |
LL | fn accept0<T: Trait>(_: Container<{ T::make() }>) {}
   |                                   ^^^^^^^^^^^^^
note: ...which requires building an abstract representation for `accept0::{constant#0}`...
  --> /checkout/tests/ui/traits/const-traits/unsatisfied-const-trait-bound.rs:28:35
   |
LL | fn accept0<T: Trait>(_: Container<{ T::make() }>) {}
   |                                   ^^^^^^^^^^^^^
note: ...which requires building THIR for `accept0::{constant#0}`...
  --> /checkout/tests/ui/traits/const-traits/unsatisfied-const-trait-bound.rs:28:35
   |
LL | fn accept0<T: Trait>(_: Container<{ T::make() }>) {}
   |                                   ^^^^^^^^^^^^^
note: ...which requires type-checking `accept0::{constant#0}`...
  --> /checkout/tests/ui/traits/const-traits/unsatisfied-const-trait-bound.rs:28:35
   |
LL | fn accept0<T: Trait>(_: Container<{ T::make() }>) {}
   |                                   ^^^^^^^^^^^^^
note: ...which requires computing normalized predicates of `accept0::{constant#0}`...
  --> /checkout/tests/ui/traits/const-traits/unsatisfied-const-trait-bound.rs:28:35
   |
LL | fn accept0<T: Trait>(_: Container<{ T::make() }>) {}
   |                                   ^^^^^^^^^^^^^
   = note: ...which again requires evaluating type-level constant, completing the cycle
note: cycle used when computing normalized predicates of `accept0`
  --> /checkout/tests/ui/traits/const-traits/unsatisfied-const-trait-bound.rs:28:35
   |
LL | fn accept0<T: Trait>(_: Container<{ T::make() }>) {}
   |                                   ^^^^^^^^^^^^^
   = note: see https://rustc-dev-guide.rust-lang.org/overview.html#queries and https://rustc-dev-guide.rust-lang.org/query.html for more information

error[E0391]: cycle detected when checking if `accept1::{constant#0}` is a trivial const
##[error]  --> /checkout/tests/ui/traits/const-traits/unsatisfied-const-trait-bound.rs:32:49
   |
LL | const fn accept1<T: [const] Trait>(_: Container<{ T::make() }>) {}
   |                                                 ^^^^^^^^^^^^^
   |
note: ...which requires building MIR for `accept1::{constant#0}`...
  --> /checkout/tests/ui/traits/const-traits/unsatisfied-const-trait-bound.rs:32:49
   |
LL | const fn accept1<T: [const] Trait>(_: Container<{ T::make() }>) {}
   |                                                 ^^^^^^^^^^^^^
note: ...which requires building an abstract representation for `accept1::{constant#0}`...
  --> /checkout/tests/ui/traits/const-traits/unsatisfied-const-trait-bound.rs:32:49
   |
LL | const fn accept1<T: [const] Trait>(_: Container<{ T::make() }>) {}
   |                                                 ^^^^^^^^^^^^^
note: ...which requires building THIR for `accept1::{constant#0}`...
  --> /checkout/tests/ui/traits/const-traits/unsatisfied-const-trait-bound.rs:32:49
   |
LL | const fn accept1<T: [const] Trait>(_: Container<{ T::make() }>) {}
   |                                                 ^^^^^^^^^^^^^
note: ...which requires type-checking `accept1::{constant#0}`...
  --> /checkout/tests/ui/traits/const-traits/unsatisfied-const-trait-bound.rs:32:49
   |
LL | const fn accept1<T: [const] Trait>(_: Container<{ T::make() }>) {}
   |                                                 ^^^^^^^^^^^^^
note: ...which requires computing normalized predicates of `accept1::{constant#0}`...
  --> /checkout/tests/ui/traits/const-traits/unsatisfied-const-trait-bound.rs:32:49
   |
LL | const fn accept1<T: [const] Trait>(_: Container<{ T::make() }>) {}
   |                                                 ^^^^^^^^^^^^^
note: ...which requires evaluating type-level constant...
  --> /checkout/tests/ui/traits/const-traits/unsatisfied-const-trait-bound.rs:32:49
   |
LL | const fn accept1<T: [const] Trait>(_: Container<{ T::make() }>) {}
   |                                                 ^^^^^^^^^^^^^
note: ...which requires const-evaluating + checking `accept1::{constant#0}`...
  --> /checkout/tests/ui/traits/const-traits/unsatisfied-const-trait-bound.rs:32:49
   |
LL | const fn accept1<T: [const] Trait>(_: Container<{ T::make() }>) {}
   |                                                 ^^^^^^^^^^^^^
   = note: ...which again requires checking if `accept1::{constant#0}` is a trivial const, completing the cycle
note: cycle used when const-evaluating + checking `accept1::{constant#0}`
  --> /checkout/tests/ui/traits/const-traits/unsatisfied-const-trait-bound.rs:32:49
   |
LL | const fn accept1<T: [const] Trait>(_: Container<{ T::make() }>) {}
   |                                                 ^^^^^^^^^^^^^
   = note: see https://rustc-dev-guide.rust-lang.org/overview.html#queries and https://rustc-dev-guide.rust-lang.org/query.html for more information

error: aborting due to 3 previous errors

---
diff of stderr:

- error[E0275]: overflow evaluating the requirement `String: Copy`
-   --> $DIR/alias-bound-unsound.rs:22:38
+ error[E0275]: overflow evaluating the requirement `<() as Foo>::Item == _`
+   --> $DIR/alias-bound-unsound.rs:22:5
3    |
4 LL |     type Item = String where String: Copy;
-    |                                      ^^^^
+    |     ^^^^^^^^^
+ 
+ error[E0276]: impl has stricter requirements than trait
+   --> $DIR/alias-bound-unsound.rs:22:38
6    |
- note: the requirement `String: Copy` appears on the `impl`'s associated type `Item` but not on the corresponding trait's associated type
-   --> $DIR/alias-bound-unsound.rs:12:10
-    |
- LL | trait Foo {
-    |       --- in this trait
12 LL |     type Item: Copy
-    |          ^^^^ this trait's associated type doesn't have the requirement `String: Copy`
+    |     --------------- definition of `Item` from trait
+ ...
+ LL |     type Item = String where String: Copy;
+    |                                      ^^^^ impl has extra requirement `String: Copy`
14 
15 error[E0275]: overflow evaluating the requirement `<() as Foo>::Item == String`
16   --> $DIR/alias-bound-unsound.rs:28:22

19    |                      ^^^^^^^^^^^^^^^^^^^^^^^^
20 
21 error[E0275]: overflow evaluating the requirement `<() as Foo>::Item == _`
-   --> $DIR/alias-bound-unsound.rs:28:22
-    |
- LL |     let _ = identity(<() as Foo>::copy_me(&x));
-    |                      ^^^^^^^^^^^^^^^^^^^^^^^^
- 
- error[E0275]: overflow evaluating the requirement `<() as Foo>::Item == _`
28   --> $DIR/alias-bound-unsound.rs:28:43
29    |
30 LL |     let _ = identity(<() as Foo>::copy_me(&x));

35    |
36 LL |     let _ = identity(<() as Foo>::copy_me(&x));
37    |                      ^^^^^^^^^^^^^^^^^^^^^^^^
-    |
-    = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
40 
41 error: aborting due to 5 previous errors
---

Note: some mismatched output was normalized before being compared
-   --> /checkout/tests/ui/traits/next-solver/alias-bound-unsound.rs:22:5
-   --> /checkout/tests/ui/traits/next-solver/alias-bound-unsound.rs:22:38
+ error[E0275]: overflow evaluating the requirement `<() as Foo>::Item == _`
+   --> $DIR/alias-bound-unsound.rs:22:5
+    |     ^^^^^^^^^
+ 
+ error[E0276]: impl has stricter requirements than trait
+   --> $DIR/alias-bound-unsound.rs:22:38
---
To only update this specific test, also pass `--test-args traits/next-solver/alias-bound-unsound.rs`

error: 1 errors occurred comparing output.
status: exit status: 1
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/traits/next-solver/alias-bound-unsound.rs" "-Zthreads=1" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Z" "ignore-directory-in-diagnostics-source-blocks=/cargo" "-Z" "ignore-directory-in-diagnostics-source-blocks=/checkout/vendor" "--sysroot" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2" "--target=aarch64-unknown-linux-gnu" "--check-cfg" "cfg(test,FALSE)" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zdeduplicate-diagnostics=no" "-Zwrite-long-types-to-disk=no" "-Cstrip=debuginfo" "--emit" "metadata" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/traits/next-solver/alias-bound-unsound" "-A" "unused" "-W" "unused_attributes" "-A" "internal_features" "-A" "incomplete_features" "-A" "unused_parens" "-A" "unused_braces" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/aarch64-unknown-linux-gnu/native/rust-test-helpers" "-Znext-solver"
stdout: none
--- stderr -------------------------------
error[E0275]: overflow evaluating the requirement `<() as Foo>::Item == _`
##[error]  --> /checkout/tests/ui/traits/next-solver/alias-bound-unsound.rs:22:5
   |
LL |     type Item = String where String: Copy;
   |     ^^^^^^^^^

---
...
LL |     type Item = String where String: Copy;
   |                                      ^^^^ impl has extra requirement `String: Copy`

error[E0275]: overflow evaluating the requirement `<() as Foo>::Item == String`
##[error]  --> /checkout/tests/ui/traits/next-solver/alias-bound-unsound.rs:28:22
   |
LL |     let _ = identity(<() as Foo>::copy_me(&x));
   |                      ^^^^^^^^^^^^^^^^^^^^^^^^

error[E0275]: overflow evaluating the requirement `<() as Foo>::Item == _`
##[error]  --> /checkout/tests/ui/traits/next-solver/alias-bound-unsound.rs:28:43
   |
LL |     let _ = identity(<() as Foo>::copy_me(&x));
   |                                           ^^

error[E0275]: overflow evaluating the requirement `<() as Foo>::Item == _`
##[error]  --> /checkout/tests/ui/traits/next-solver/alias-bound-unsound.rs:28:22
   |
LL |     let _ = identity(<() as Foo>::copy_me(&x));
   |                      ^^^^^^^^^^^^^^^^^^^^^^^^

error: aborting due to 5 previous errors

Some errors have detailed explanations: E0275, E0276.
---
diff of stderr:

8    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation
9    |
10    = note: overflow evaluating the requirement `<LocalTy as Overflow>::Assoc == _`
-    = note: overflow evaluating the requirement `<LocalTy as Overflow>::Assoc == _`
12    = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`trait_ref_is_knowable_norm_overflow`)
13 
14 error: aborting due to 1 previous error


The actual stderr differed from the expected stderr
To update references, rerun the tests and pass the `--bless` flag
To only update this specific test, also pass `--test-args traits/next-solver/coherence/trait_ref_is_knowable-norm-overflow.rs`

error: 1 errors occurred comparing output.
status: exit status: 1
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/traits/next-solver/coherence/trait_ref_is_knowable-norm-overflow.rs" "-Zthreads=1" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Z" "ignore-directory-in-diagnostics-source-blocks=/cargo" "-Z" "ignore-directory-in-diagnostics-source-blocks=/checkout/vendor" "--sysroot" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2" "--target=aarch64-unknown-linux-gnu" "--check-cfg" "cfg(test,FALSE)" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zdeduplicate-diagnostics=no" "-Zwrite-long-types-to-disk=no" "-Cstrip=debuginfo" "--emit" "metadata" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/traits/next-solver/coherence/trait_ref_is_knowable-norm-overflow" "-A" "unused" "-W" "unused_attributes" "-A" "internal_features" "-A" "incomplete_features" "-A" "unused_parens" "-A" "unused_braces" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/aarch64-unknown-linux-gnu/native/rust-test-helpers" "-Znext-solver"
stdout: none
--- stderr -------------------------------
error[E0119]: conflicting implementations of trait `Trait`
##[error]  --> /checkout/tests/ui/traits/next-solver/coherence/trait_ref_is_knowable-norm-overflow.rs:20:1
   |
LL | impl<T: Copy> Trait for T {}
   | ------------------------- first implementation here
LL | struct LocalTy;
LL | impl Trait for <LocalTy as Overflow>::Assoc {}
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation
   |
   = note: overflow evaluating the requirement `<LocalTy as Overflow>::Assoc == _`
   = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`trait_ref_is_knowable_norm_overflow`)

error: aborting due to 1 previous error

For more information about this error, try `rustc --explain E0119`.
------------------------------------------
---
To only update this specific test, also pass `--test-args traits/next-solver/cycles/normalizes-to-is-not-productive.rs`

error: 1 errors occurred comparing output.
status: exit status: 1
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/traits/next-solver/cycles/normalizes-to-is-not-productive.rs" "-Zthreads=1" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Z" "ignore-directory-in-diagnostics-source-blocks=/cargo" "-Z" "ignore-directory-in-diagnostics-source-blocks=/checkout/vendor" "--sysroot" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2" "--target=aarch64-unknown-linux-gnu" "--check-cfg" "cfg(test,FALSE)" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zdeduplicate-diagnostics=no" "-Zwrite-long-types-to-disk=no" "-Cstrip=debuginfo" "--emit" "metadata" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/traits/next-solver/cycles/normalizes-to-is-not-productive" "-A" "unused" "-W" "unused_attributes" "-A" "internal_features" "-A" "incomplete_features" "-A" "unused_parens" "-A" "unused_braces" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/aarch64-unknown-linux-gnu/native/rust-test-helpers" "-Znext-solver"
stdout: none
--- stderr -------------------------------
error[E0277]: the trait bound `Foo: Bound` is not satisfied
##[error]  --> /checkout/tests/ui/traits/next-solver/cycles/normalizes-to-is-not-productive.rs:40:1
   |
---
---- [ui] tests/ui/traits/next-solver/find-param-recursion-issue-152716.rs stdout ----
Saved the actual stderr to `/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/traits/next-solver/find-param-recursion-issue-152716/find-param-recursion-issue-152716.stderr`
diff of stderr:

- error[E0275]: overflow evaluating the requirement `(): Trait<for<'b> fn(<T as Proj<'b>>::Assoc)>`
+ error[E0277]: the trait bound `(): Trait<fn(fn(fn(for<'b> fn(<T as Proj<'b>>::Assoc))))>` is not satisfied
2   --> $DIR/find-param-recursion-issue-152716.rs:16:9
3    |
4 LL |     (): Trait<<T as Proj<'static>>::Assoc>

-    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Trait<fn(fn(fn(for<'b> fn(<T as Proj<'b>>::Assoc))))>` is not implemented for `()`
6    |
-    = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`find_param_recursion_issue_152716`)
+ help: this trait has no implementations, consider adding one
+   --> $DIR/find-param-recursion-issue-152716.rs:9:1
+    |
---
12 

Note: some mismatched output was normalized before being compared
-   --> /checkout/tests/ui/traits/next-solver/find-param-recursion-issue-152716.rs:9:1
+ error[E0277]: the trait bound `(): Trait<fn(fn(fn(for<'b> fn(<T as Proj<'b>>::Assoc))))>` is not satisfied
+    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Trait<fn(fn(fn(for<'b> fn(<T as Proj<'b>>::Assoc))))>` is not implemented for `()`
+ help: this trait has no implementations, consider adding one
+   --> $DIR/find-param-recursion-issue-152716.rs:9:1
+    |
+ LL | trait Trait<T> {}
+    | ^^^^^^^^^^^^^^
+ For more information about this error, try `rustc --explain E0277`.
---
To only update this specific test, also pass `--test-args traits/next-solver/find-param-recursion-issue-152716.rs`

error: 1 errors occurred comparing output.
status: exit status: 1
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/traits/next-solver/find-param-recursion-issue-152716.rs" "-Zthreads=1" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Z" "ignore-directory-in-diagnostics-source-blocks=/cargo" "-Z" "ignore-directory-in-diagnostics-source-blocks=/checkout/vendor" "--sysroot" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2" "--target=aarch64-unknown-linux-gnu" "--check-cfg" "cfg(test,FALSE)" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zdeduplicate-diagnostics=no" "-Zwrite-long-types-to-disk=no" "-Cstrip=debuginfo" "--emit" "metadata" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/traits/next-solver/find-param-recursion-issue-152716" "-A" "unused" "-W" "unused_attributes" "-A" "internal_features" "-A" "incomplete_features" "-A" "unused_parens" "-A" "unused_braces" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/aarch64-unknown-linux-gnu/native/rust-test-helpers" "-Znext-solver"
stdout: none
--- stderr -------------------------------
error[E0277]: the trait bound `(): Trait<fn(fn(fn(for<'b> fn(<T as Proj<'b>>::Assoc))))>` is not satisfied
##[error]  --> /checkout/tests/ui/traits/next-solver/find-param-recursion-issue-152716.rs:16:9
   |
LL |     (): Trait<<T as Proj<'static>>::Assoc>
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Trait<fn(fn(fn(for<'b> fn(<T as Proj<'b>>::Assoc))))>` is not implemented for `()`
   |
help: this trait has no implementations, consider adding one
  --> /checkout/tests/ui/traits/next-solver/find-param-recursion-issue-152716.rs:9:1
   |
LL | trait Trait<T> {}
---
---- [ui] tests/ui/traits/next-solver/normalize/normalize-param-env-1.rs stdout ----

error: test compilation failed although it shouldn't!
status: exit status: 1
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/traits/next-solver/normalize/normalize-param-env-1.rs" "-Zthreads=1" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Z" "ignore-directory-in-diagnostics-source-blocks=/cargo" "-Z" "ignore-directory-in-diagnostics-source-blocks=/checkout/vendor" "--sysroot" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2" "--target=aarch64-unknown-linux-gnu" "--check-cfg" "cfg(test,FALSE)" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zdeduplicate-diagnostics=no" "-Zwrite-long-types-to-disk=no" "-Cstrip=debuginfo" "--emit" "metadata" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/traits/next-solver/normalize/normalize-param-env-1" "-A" "unused" "-W" "unused_attributes" "-A" "internal_features" "-A" "incomplete_features" "-A" "unused_parens" "-A" "unused_braces" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/aarch64-unknown-linux-gnu/native/rust-test-helpers" "-Znext-solver"
stdout: none
--- stderr -------------------------------
error[E0277]: the trait bound `T: Trait<()>` is not satisfied
##[error]  --> /checkout/tests/ui/traits/next-solver/normalize/normalize-param-env-1.rs:26:1
   |
---
------------------------------------------

---- [ui] tests/ui/traits/next-solver/normalize/normalize-param-env-1.rs stdout end ----
---- [ui] tests/ui/traits/next-solver/normalize/normalize-param-env-2.rs stdout ----
Saved the actual stderr to `/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/traits/next-solver/normalize/normalize-param-env-2/normalize-param-env-2.stderr`
diff of stderr:

- error[E0275]: overflow evaluating the requirement `<() as A<T>>::Assoc == _`
-   --> $DIR/normalize-param-env-2.rs:22:5
+ error[E0276]: impl has stricter requirements than trait
+   --> $DIR/normalize-param-env-2.rs:24:22
3    |
4 LL | /     fn f()
5 LL | |     where

6 LL | |         Self::Assoc: A<T>,
-    | |__________________________^
- 
- error[E0275]: overflow evaluating the requirement `<() as A<T>>::Assoc == _`
-   --> $DIR/normalize-param-env-2.rs:22:5
-    |
- LL | /     fn f()
- LL | |     where
- LL | |         Self::Assoc: A<T>,
-    | |__________________________^
-    |
-    = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
- 
- error[E0275]: overflow evaluating the requirement `<() as A<T>>::Assoc == _`
-   --> $DIR/normalize-param-env-2.rs:24:22
-    |
- LL |         Self::Assoc: A<T>,
-    |                      ^^^^
- 
- error[E0283]: type annotations needed
-   --> $DIR/normalize-param-env-2.rs:24:22
-    |
- LL |         Self::Assoc: A<T>,
-    |                      ^^^^ cannot infer type
-    |
- note: multiple `impl`s or `where` clauses satisfying `_: A<T>` found
-   --> $DIR/normalize-param-env-2.rs:19:1
-    |
- LL | impl<T> A<T> for () {
-    | ^^^^^^^^^^^^^^^^^^^
+    | |__________________________- definition of `f` from trait
36 ...
- LL |         Self::Assoc: A<T>,
-    |                      ^^^^
- note: the requirement `_: A<T>` appears on the `impl`'s associated function `f` but not on the corresponding trait's associated function
-   --> $DIR/normalize-param-env-2.rs:12:8
-    |
- LL | trait A<T> {
-    |       - in this trait
- ...
- LL |     fn f()
-    |        ^ this trait's associated function doesn't have the requirement `_: A<T>`
+ LL |           Self::Assoc: A<T>,
+    |                        ^^^^ impl has extra requirement `<() as A<T>>::Assoc: A<T>`
47 
- error[E0275]: overflow evaluating the requirement `<() as A<T>>::Assoc == _`
+ error[E0277]: the trait bound `<() as A<T>>::Assoc: A<T>` is not satisfied
49   --> $DIR/normalize-param-env-2.rs:24:22
50    |
51 LL |         Self::Assoc: A<T>,

-    |                      ^^^^
+    |                      ^^^^ the trait `A<T>` is not implemented for `<() as A<T>>::Assoc`
53    |
- note: required by a bound in `A`
-   --> $DIR/normalize-param-env-2.rs:9:1
-    |
- LL | / trait A<T> {
- LL | |     type Assoc;
- LL | |
- LL | |     fn f()
- ...  |
- LL | | }
-    | |_^ required by this bound in `A`
- 
- error[E0275]: overflow evaluating the requirement `<() as A<T>>::Assoc == _`
-   --> $DIR/normalize-param-env-2.rs:24:22
-    |
- LL |         Self::Assoc: A<T>,
-    |                      ^^^^
-    |
---
-    |
- LL |         Self::Assoc: A<T>,
-    |                      ^^^^ cannot infer type
-    |
- note: multiple `impl`s or `where` clauses satisfying `_: A<T>` found
+ help: the trait `A<T>` is implemented for `()`
80   --> $DIR/normalize-param-env-2.rs:19:1
81    |
82 LL | impl<T> A<T> for () {

83    | ^^^^^^^^^^^^^^^^^^^
- ...
- LL |         Self::Assoc: A<T>,
-    |                      ^^^^
87 
- error[E0275]: overflow evaluating whether `<() as A<T>>::Assoc` is well-formed
-   --> $DIR/normalize-param-env-2.rs:24:22
+ error[E0277]: the trait bound `<() as A<T>>::Assoc: A<T>` is not satisfied
+   --> $DIR/normalize-param-env-2.rs:27:18
90    |
- LL |         Self::Assoc: A<T>,
-    |                      ^^^^
- 
- error[E0275]: overflow evaluating the requirement `(): A<T>`
-   --> $DIR/normalize-param-env-2.rs:27:10
-    |
97 LL |         <() as A<T>>::f();
-    |          ^^
- 
- error[E0275]: overflow evaluating the requirement `<() as A<T>>::Assoc == _`
-   --> $DIR/normalize-param-env-2.rs:27:9
+    |                  ^ the trait `A<T>` is not implemented for `<() as A<T>>::Assoc`
102    |
- LL |         <() as A<T>>::f();
-    |         ^^^^^^^^^^^^^^^^^
- 
- error[E0283]: type annotations needed
-   --> $DIR/normalize-param-env-2.rs:27:9
-    |
- LL |         <() as A<T>>::f();
-    |         ^^^^^^^^^^^^^^^^^ cannot infer type
-    |
- note: multiple `impl`s or `where` clauses satisfying `_: A<T>` found
+ help: the trait `A<T>` is implemented for `()`
113   --> $DIR/normalize-param-env-2.rs:19:1
114    |
115 LL | impl<T> A<T> for () {

116    | ^^^^^^^^^^^^^^^^^^^
---
-   --> /checkout/tests/ui/traits/next-solver/normalize/normalize-param-env-2.rs:24:22
-   --> /checkout/tests/ui/traits/next-solver/normalize/normalize-param-env-2.rs:27:18
+ error[E0276]: impl has stricter requirements than trait
+   --> $DIR/normalize-param-env-2.rs:24:22
+    | |__________________________- definition of `f` from trait
+ LL |           Self::Assoc: A<T>,
+    |                        ^^^^ impl has extra requirement `<() as A<T>>::Assoc: A<T>`
+ error[E0277]: the trait bound `<() as A<T>>::Assoc: A<T>` is not satisfied
+    |                      ^^^^ the trait `A<T>` is not implemented for `<() as A<T>>::Assoc`
+ help: the trait `A<T>` is implemented for `()`
+ error[E0277]: the trait bound `<() as A<T>>::Assoc: A<T>` is not satisfied
+   --> $DIR/normalize-param-env-2.rs:27:18
+    |                  ^ the trait `A<T>` is not implemented for `<() as A<T>>::Assoc`
+ help: the trait `A<T>` is implemented for `()`
+ error: aborting due to 3 previous errors
+ Some errors have detailed explanations: E0276, E0277.
+ For more information about an error, try `rustc --explain E0276`.


The actual stderr differed from the expected stderr
To update references, rerun the tests and pass the `--bless` flag
To only update this specific test, also pass `--test-args traits/next-solver/normalize/normalize-param-env-2.rs`

error: 1 errors occurred comparing output.
status: exit status: 1
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/traits/next-solver/normalize/normalize-param-env-2.rs" "-Zthreads=1" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Z" "ignore-directory-in-diagnostics-source-blocks=/cargo" "-Z" "ignore-directory-in-diagnostics-source-blocks=/checkout/vendor" "--sysroot" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2" "--target=aarch64-unknown-linux-gnu" "--check-cfg" "cfg(test,FALSE)" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zdeduplicate-diagnostics=no" "-Zwrite-long-types-to-disk=no" "-Cstrip=debuginfo" "--emit" "metadata" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/traits/next-solver/normalize/normalize-param-env-2" "-A" "unused" "-W" "unused_attributes" "-A" "internal_features" "-A" "incomplete_features" "-A" "unused_parens" "-A" "unused_braces" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/aarch64-unknown-linux-gnu/native/rust-test-helpers" "-Znext-solver"
stdout: none
--- stderr -------------------------------
error[E0276]: impl has stricter requirements than trait
##[error]  --> /checkout/tests/ui/traits/next-solver/normalize/normalize-param-env-2.rs:24:22
   |
LL | /     fn f()
LL | |     where
LL | |         Self::Assoc: A<T>,
   | |__________________________- definition of `f` from trait
...
LL |           Self::Assoc: A<T>,
   |                        ^^^^ impl has extra requirement `<() as A<T>>::Assoc: A<T>`

error[E0277]: the trait bound `<() as A<T>>::Assoc: A<T>` is not satisfied
##[error]  --> /checkout/tests/ui/traits/next-solver/normalize/normalize-param-env-2.rs:24:22
   |
LL |         Self::Assoc: A<T>,
   |                      ^^^^ the trait `A<T>` is not implemented for `<() as A<T>>::Assoc`
   |
help: the trait `A<T>` is implemented for `()`
  --> /checkout/tests/ui/traits/next-solver/normalize/normalize-param-env-2.rs:19:1
   |
LL | impl<T> A<T> for () {
   | ^^^^^^^^^^^^^^^^^^^

error[E0277]: the trait bound `<() as A<T>>::Assoc: A<T>` is not satisfied
##[error]  --> /checkout/tests/ui/traits/next-solver/normalize/normalize-param-env-2.rs:27:18
   |
LL |         <() as A<T>>::f();
   |                  ^ the trait `A<T>` is not implemented for `<() as A<T>>::Assoc`
   |
help: the trait `A<T>` is implemented for `()`
  --> /checkout/tests/ui/traits/next-solver/normalize/normalize-param-env-2.rs:19:1
   |
LL | impl<T> A<T> for () {
   | ^^^^^^^^^^^^^^^^^^^
note: required by a bound in `A::f`
---
---- [ui] tests/ui/traits/next-solver/normalize/normalize-param-env-3.rs stdout ----

error: test compilation failed although it shouldn't!
status: exit status: 1
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/traits/next-solver/normalize/normalize-param-env-3.rs" "-Zthreads=1" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Z" "ignore-directory-in-diagnostics-source-blocks=/cargo" "-Z" "ignore-directory-in-diagnostics-source-blocks=/checkout/vendor" "--sysroot" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2" "--target=aarch64-unknown-linux-gnu" "--check-cfg" "cfg(test,FALSE)" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zdeduplicate-diagnostics=no" "-Zwrite-long-types-to-disk=no" "-Cstrip=debuginfo" "--emit" "metadata" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/traits/next-solver/normalize/normalize-param-env-3" "-A" "unused" "-W" "unused_attributes" "-A" "internal_features" "-A" "incomplete_features" "-A" "unused_parens" "-A" "unused_braces" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/aarch64-unknown-linux-gnu/native/rust-test-helpers" "-Znext-solver"
stdout: none
--- stderr -------------------------------
error[E0277]: the trait bound `C: Channel<()>` is not satisfied
##[error]  --> /checkout/tests/ui/traits/next-solver/normalize/normalize-param-env-3.rs:22:5
   |
LL | /     fn send<C>()
LL | |     where
LL | |         C: Channel<Self::Msg>,
   | |______________________________^ the trait `Channel<()>` is not implemented for `C`

error[E0276]: impl has stricter requirements than trait
##[error]  --> /checkout/tests/ui/traits/next-solver/normalize/normalize-param-env-3.rs:24:12
   |
LL | /     fn send<C>()
LL | |     where
LL | |         C: Channel<Self::Msg>;
   | |______________________________- definition of `send` from trait
...
LL |           C: Channel<Self::Msg>,
   |              ^^^^^^^^^^^^^^^^^^ impl has extra requirement `C: Channel<()>`

error[E0277]: the trait bound `C: Channel<()>` is not satisfied
##[error]  --> /checkout/tests/ui/traits/next-solver/normalize/normalize-param-env-3.rs:22:5
   |
LL | /     fn send<C>()
LL | |     where
LL | |         C: Channel<Self::Msg>,
   | |______________________________^ the trait `Channel<()>` is not implemented for `C`
   |
   = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`

error[E0277]: the trait bound `C: Channel<()>` is not satisfied
##[error]  --> /checkout/tests/ui/traits/next-solver/normalize/normalize-param-env-3.rs:24:12
   |
LL |         C: Channel<Self::Msg>,
   |            ^^^^^^^^^^^^^^^^^^ the trait `Channel<()>` is not implemented for `C`
   |
note: required by a bound in `Channel`
  --> /checkout/tests/ui/traits/next-solver/normalize/normalize-param-env-3.rs:7:19
   |
LL | trait Channel<I>: GenericTrait<Self::T> {
   |                   ^^^^^^^^^^^^^^^^^^^^^ required by this bound in `Channel`

error: aborting due to 4 previous errors

Some errors have detailed explanations: E0276, E0277.
---
error in revision `next`: ui test did not emit an error
note: by default, ui tests are expected not to compile.
hint: use check-pass, build-pass, or run-pass directive to change this behavior.
status: exit status: 0
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/traits/next-solver/normalize/normalize-param-env-4.rs" "-Zthreads=1" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Z" "ignore-directory-in-diagnostics-source-blocks=/cargo" "-Z" "ignore-directory-in-diagnostics-source-blocks=/checkout/vendor" "--sysroot" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2" "--target=aarch64-unknown-linux-gnu" "--cfg" "next" "--check-cfg" "cfg(test,FALSE,current,next)" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zdeduplicate-diagnostics=no" "-Zwrite-long-types-to-disk=no" "-Cstrip=debuginfo" "--emit" "metadata" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/traits/next-solver/normalize/normalize-param-env-4.next" "-A" "unused" "-W" "unused_attributes" "-A" "internal_features" "-A" "incomplete_features" "-A" "unused_parens" "-A" "unused_braces" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/aarch64-unknown-linux-gnu/native/rust-test-helpers" "-Znext-solver"
stdout: none
stderr: none

---- [ui] tests/ui/traits/next-solver/normalize/normalize-param-env-4.rs#next stdout end ----
---- [ui] tests/ui/type-alias-impl-trait/coherence/coherence_different_hidden_ty.rs stdout ----

error: ui test did not emit an error
note: by default, ui tests are expected not to compile.
hint: use check-pass, build-pass, or run-pass directive to change this behavior.
status: exit status: 0
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/type-alias-impl-trait/coherence/coherence_different_hidden_ty.rs" "-Zthreads=1" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Z" "ignore-directory-in-diagnostics-source-blocks=/cargo" "-Z" "ignore-directory-in-diagnostics-source-blocks=/checkout/vendor" "--sysroot" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2" "--target=aarch64-unknown-linux-gnu" "--check-cfg" "cfg(test,FALSE)" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zdeduplicate-diagnostics=no" "-Zwrite-long-types-to-disk=no" "-Cstrip=debuginfo" "--emit" "metadata" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/type-alias-impl-trait/coherence/coherence_different_hidden_ty" "-A" "unused" "-W" "unused_attributes" "-A" "internal_features" "-A" "incomplete_features" "-A" "unused_parens" "-A" "unused_braces" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/aarch64-unknown-linux-gnu/native/rust-test-helpers"
stdout: none
stderr: none

---- [ui] tests/ui/type-alias-impl-trait/coherence/coherence_different_hidden_ty.rs stdout end ----
---- [ui] tests/ui/typeck/issue-116864.rs stdout ----

error: test compilation failed although it shouldn't!
status: exit status: 1
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/typeck/issue-116864.rs" "-Zthreads=1" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Z" "ignore-directory-in-diagnostics-source-blocks=/cargo" "-Z" "ignore-directory-in-diagnostics-source-blocks=/checkout/vendor" "--sysroot" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2" "--target=aarch64-unknown-linux-gnu" "--check-cfg" "cfg(test,FALSE)" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zdeduplicate-diagnostics=no" "-Zwrite-long-types-to-disk=no" "-Cstrip=debuginfo" "--emit" "metadata" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/typeck/issue-116864" "-A" "unused" "-W" "unused_attributes" "-A" "internal_features" "-A" "incomplete_features" "-A" "unused_parens" "-A" "unused_braces" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/aarch64-unknown-linux-gnu/native/rust-test-helpers" "--edition=2021" "-Znext-solver"
stdout: none
--- stderr -------------------------------
error[E0277]: expected a `FnOnce(&'any i32)` closure, found `impl for<'any> FnMutFut<&'any BAZ::Param, ()>`
##[error]  --> /checkout/tests/ui/typeck/issue-116864.rs:23:1
   |
LL | / async fn foo<BAZ>(_: BAZ, mut cb: impl for<'any> FnMutFut<&'any BAZ::Param, ()>)
LL | | where
LL | |     BAZ: Baz<Param = i32>,
   | |__________________________^ expected an `FnOnce(&'any i32)` closure, found `impl for<'any> FnMutFut<&'any BAZ::Param, ()>`
   |
   = note: expected a closure with signature `for<'any> fn(&'any _)`
              found a closure with signature `fn(&_)`
note: required for `impl for<'any> FnMutFut<&'any BAZ::Param, ()>` to implement `for<'any> FnMutFut<&'any i32, ()>`
  --> /checkout/tests/ui/typeck/issue-116864.rs:15:20
   |
LL | impl<P, F, FUT, R> FnMutFut<P, R> for F
   |                    ^^^^^^^^^^^^^^     ^
LL | where
LL |     F: FnMut(P) -> FUT,
   |                    --- unsatisfied trait bound introduced here

error: the type `impl Future<Output = ()>` is not well-formed
##[error]  --> /checkout/tests/ui/typeck/issue-116864.rs:23:81
   |
LL | async fn foo<BAZ>(_: BAZ, mut cb: impl for<'any> FnMutFut<&'any BAZ::Param, ()>)
   |                                                                                 ^

error[E0277]: expected a `FnMut(&i32)` closure, found `impl for<'any> FnMutFut<&'any BAZ::Param, ()>`
##[error]  --> /checkout/tests/ui/typeck/issue-116864.rs:27:5
   |
LL |     cb(&1i32).await;
   |     ^^^^^^^^^ expected an `FnMut(&i32)` closure, found `impl for<'any> FnMutFut<&'any BAZ::Param, ()>`

error[E0308]: mismatched types
##[error]  --> /checkout/tests/ui/typeck/issue-116864.rs:27:5
   |
LL |     cb(&1i32).await;
   |     ^^^^^^^^^ ----- arguments to this function are incorrect
   |     |
   |     types differ
   |
   = note:         expected type `_`
           found associated type `<impl for<'any> FnMutFut<&'any BAZ::Param, ()> as FnOnce<(&i32,)>>::Output`
   = help: consider constraining the associated type `<impl for<'any> FnMutFut<&'any BAZ::Param, ()> as FnOnce<(&i32,)>>::Output` to `_`
   = note: for more information, visit https://doc.rust-lang.org/book/ch19-03-advanced-traits.html
note: method defined here
  --> /rustc/FAKE_PREFIX/library/core/src/future/into_future.rs:134:7

error: the type `{async fn body of foo<BAZ, impl for<'any> FnMutFut<&'any BAZ::Param, ()>>()}` is not well-formed
##[error]  --> /checkout/tests/ui/typeck/issue-116864.rs:23:81
   |
LL | async fn foo<BAZ>(_: BAZ, mut cb: impl for<'any> FnMutFut<&'any BAZ::Param, ()>)
   |                                                                                 ^

error[E0277]: expected a `FnOnce(&'any i32)` closure, found `impl for<'any> FnMutFut<&'any BAZ::Param, ()>`
##[error]  --> /checkout/tests/ui/typeck/issue-116864.rs:26:1
   |
LL | / {
LL | |     cb(&1i32).await;
LL | | }
   | |_^ expected an `FnOnce(&'any i32)` closure, found `impl for<'any> FnMutFut<&'any BAZ::Param, ()>`
   |
   = note: expected a closure with signature `for<'any> fn(&'any _)`
              found a closure with signature `fn(&_)`
note: required for `impl for<'any> FnMutFut<&'any BAZ::Param, ()>` to implement `for<'any> FnMutFut<&'any i32, ()>`
  --> /checkout/tests/ui/typeck/issue-116864.rs:15:20
   |
LL | impl<P, F, FUT, R> FnMutFut<P, R> for F
   |                    ^^^^^^^^^^^^^^     ^
LL | where
LL |     F: FnMut(P) -> FUT,
   |                    --- unsatisfied trait bound introduced here

@rust-bors

rust-bors Bot commented May 19, 2026

Copy link
Copy Markdown
Contributor

☀️ Try build successful (CI)
Build commit: 93bdda1 (93bdda13b2eec06e23943e07be913300b5b5e9f3, parent: 9eb3be26b46eccea1de7448ea9cc3c1d20bb1a35)

@rust-timer

This comment has been minimized.

@rust-timer

Copy link
Copy Markdown
Collaborator

Finished benchmarking commit (93bdda1): comparison URL.

Overall result: ❌✅ regressions and improvements - please read:

Benchmarking means the PR may be perf-sensitive. It's automatically marked not fit for rolling up. Overriding is possible but disadvised: it risks changing compiler perf.

Next, please: If you can, justify the regressions found in this try perf run in writing along with @rustbot label: +perf-regression-triaged. If not, fix the regressions and do another perf run. Neutral or positive results will clear the label automatically.

@bors rollup=never
@rustbot label: -S-waiting-on-perf +perf-regression

Instruction count

Our most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.

mean range count
Regressions ❌
(primary)
1.3% [1.0%, 2.0%] 7
Regressions ❌
(secondary)
7.6% [0.7%, 53.9%] 23
Improvements ✅
(primary)
-0.2% [-0.3%, -0.2%] 4
Improvements ✅
(secondary)
-2.6% [-2.6%, -2.6%] 1
All ❌✅ (primary) 0.7% [-0.3%, 2.0%] 11

Max RSS (memory usage)

Results (primary 2.0%, secondary -2.5%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
2.0% [1.2%, 2.4%] 6
Regressions ❌
(secondary)
2.6% [1.4%, 3.6%] 4
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-4.5% [-15.5%, -1.1%] 10
All ❌✅ (primary) 2.0% [1.2%, 2.4%] 6

Cycles

Results (primary 2.3%, secondary 15.6%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
2.3% [2.3%, 2.3%] 1
Regressions ❌
(secondary)
21.9% [5.4%, 50.7%] 6
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-3.1% [-3.9%, -2.4%] 2
All ❌✅ (primary) 2.3% [2.3%, 2.3%] 1

Binary size

Results (primary -0.0%, secondary -0.0%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-0.0% [-0.0%, -0.0%] 15
Improvements ✅
(secondary)
-0.0% [-0.1%, -0.0%] 6
All ❌✅ (primary) -0.0% [-0.0%, -0.0%] 15

Bootstrap: 510.171s -> 513.059s (0.57%)
Artifact size: 398.52 MiB -> 400.94 MiB (0.61%)

@rustbot rustbot removed the S-waiting-on-perf Status: Waiting on a perf run to be completed. label May 19, 2026
@rust-bors

rust-bors Bot commented May 27, 2026

Copy link
Copy Markdown
Contributor

☔ The latest upstream changes (presumably #157005) made this pull request unmergeable. Please resolve the merge conflicts.

@lcnr

lcnr commented Jul 14, 2026

Copy link
Copy Markdown
Contributor Author

superseded by #158643

@lcnr lcnr closed this Jul 14, 2026
@rustbot rustbot removed the S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. label Jul 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

perf-regression Performance regression. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants