Skip to content

possible minimal fix for #146965, #146813, and #158756#159209

Draft
mumbleskates wants to merge 1 commit into
rust-lang:mainfrom
mumbleskates:trait-selection-experiment
Draft

possible minimal fix for #146965, #146813, and #158756#159209
mumbleskates wants to merge 1 commit into
rust-lang:mainfrom
mumbleskates:trait-selection-experiment

Conversation

@mumbleskates

Copy link
Copy Markdown
Contributor

#158756
r? shoyuvanilla

@rustbot rustbot added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Jul 13, 2026
@ShoyuVanilla

Copy link
Copy Markdown
Member

@bors try @rust-timer queue

@rust-timer

Copy link
Copy Markdown
Collaborator

Awaiting bors try build completion.

@rustbot label: +S-waiting-on-perf

@rust-bors

This comment has been minimized.

@rustbot rustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Jul 13, 2026
rust-bors Bot pushed a commit that referenced this pull request Jul 13, 2026
@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/codegen/normalization-overflow/recursion-issue-118590.rs stdout ----
Saved the actual stderr to `/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/codegen/normalization-overflow/recursion-issue-118590/recursion-issue-118590.stderr`
diff of stderr:

- error: reached the recursion limit while instantiating `<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<std::iter::Empty<()>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> as Iterator>::peekable`
-   --> $DIR/recursion-issue-118590.rs:10:13
+ error[E0275]: overflow evaluating the requirement `std::iter::Empty<()>: Iterator`
3    |
- LL |     recurse(nums.skip(42).peekable())
-    |             ^^^^^^^^^^^^^^^^^^^^^^^^
-    |
- note: `peekable` defined here
-   --> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL
+    = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`recursion_issue_118590`)
+    = note: required for `Skip<std::iter::Empty<()>>` to implement `Iterator`
+    = note: 127 redundant requirements hidden
+    = note: required for `Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<std::iter::Empty<()>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>` to implement `Iterator`
9 
10 error: aborting due to 1 previous error
11 

+ For more information about this error, try `rustc --explain E0275`.
---
To only update this specific test, also pass `--test-args codegen/normalization-overflow/recursion-issue-118590.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/codegen/normalization-overflow/recursion-issue-118590.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" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/codegen/normalization-overflow/recursion-issue-118590" "-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 -------------------------------
error[E0275]: overflow evaluating the requirement `std::iter::Empty<()>: Iterator`
   |
   = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`recursion_issue_118590`)
   = note: required for `Skip<std::iter::Empty<()>>` to implement `Iterator`
   = note: 127 redundant requirements hidden
   = note: required for `Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<Peekable<Skip<std::iter::Empty<()>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>` to implement `Iterator`

error: aborting due to 1 previous error

For more information about this error, try `rustc --explain E0275`.
------------------------------------------

---- [ui] tests/ui/codegen/normalization-overflow/recursion-issue-118590.rs stdout end ----
---- [ui] tests/ui/codegen/normalization-overflow/recursion-issue-117696-1.rs stdout ----
Saved the actual stderr to `/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/codegen/normalization-overflow/recursion-issue-117696-1/recursion-issue-117696-1.stderr`
diff of stderr:

- error: reached the recursion limit while instantiating `<&mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut Empty as Iterator>::count`
-   --> $DIR/recursion-issue-117696-1.rs:25:9
+ error[E0275]: overflow evaluating the requirement `&mut Empty: Iterator`
3    |
- LL |         T::count(it);
-    |         ^^^^^^^^^^^^
-    |
- note: `count` defined here
-   --> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL
+    = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`recursion_issue_117696_1`)
+    = note: required for `&mut &mut Empty` to implement `Iterator`
+    = note: 125 redundant requirements hidden
+    = note: required for `&mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut Empty` to implement `Iterator`
+    = note: required for `&mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut Empty` to implement `iter::traits::iterator::IteratorRefSpec`
9 
10 error: aborting due to 1 previous error
11 

+ For more information about this error, try `rustc --explain E0275`.
---
To only update this specific test, also pass `--test-args codegen/normalization-overflow/recursion-issue-117696-1.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/codegen/normalization-overflow/recursion-issue-117696-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" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/codegen/normalization-overflow/recursion-issue-117696-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"
stdout: none
--- stderr -------------------------------
error[E0275]: overflow evaluating the requirement `&mut Empty: Iterator`
   |
   = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`recursion_issue_117696_1`)
   = note: required for `&mut &mut Empty` to implement `Iterator`
   = note: 125 redundant requirements hidden
   = note: required for `&mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut Empty` to implement `Iterator`
   = note: required for `&mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut &mut Empty` to implement `iter::traits::iterator::IteratorRefSpec`

error: aborting due to 1 previous error

For more information about this error, try `rustc --explain E0275`.
------------------------------------------

---- [ui] tests/ui/codegen/normalization-overflow/recursion-issue-117696-1.rs stdout end ----
---- [ui] tests/ui/codegen/normalization-overflow/recursion-issue-137823.rs stdout ----
Saved the actual stderr to `/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/codegen/normalization-overflow/recursion-issue-137823/recursion-issue-137823.stderr`
diff of stderr:

- error: reached the recursion limit while instantiating `convert2::<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<Ser>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
-   --> $DIR/recursion-issue-137823.rs:8:5
+ error[E0275]: overflow evaluating the requirement `ConvertWrap<Ser>: Converter`
3    |
- LL |     convert2::<ConvertWrap<S>>()
-    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+    = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`recursion_issue_137823`)
+ note: required for `ConvertWrap<ConvertWrap<Ser>>` to implement `Converter`
+   --> $DIR/recursion-issue-137823.rs:34:9
6    |
- note: `convert2` defined here
-   --> $DIR/recursion-issue-137823.rs:12:1
-    |
- LL | fn convert2<S: Converter>() -> S::Out {
-    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ LL | impl<S> Converter for ConvertWrap<S>
+    |         ^^^^^^^^^     ^^^^^^^^^^^^^^
+ LL | where
+ LL |     S: Converter,
+    |        --------- unsatisfied trait bound introduced here
+    = note: 127 redundant requirements hidden
+    = note: required for `ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<Ser>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>` to implement `Converter`
12 
13 error: aborting due to 1 previous error
14 

+ For more information about this error, try `rustc --explain E0275`.
15 

Note: some mismatched output was normalized before being compared
-   --> /checkout/tests/ui/codegen/normalization-overflow/recursion-issue-137823.rs:34:9
+ error[E0275]: overflow evaluating the requirement `ConvertWrap<Ser>: Converter`
+    = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`recursion_issue_137823`)
+ note: required for `ConvertWrap<ConvertWrap<Ser>>` to implement `Converter`
+   --> $DIR/recursion-issue-137823.rs:34:9
+ LL | impl<S> Converter for ConvertWrap<S>
+    |         ^^^^^^^^^     ^^^^^^^^^^^^^^
+ LL | where
+ LL |     S: Converter,
+    |        --------- unsatisfied trait bound introduced here
+    = note: 127 redundant requirements hidden
+    = note: required for `ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<Ser>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>` to implement `Converter`
+ For more information about this error, try `rustc --explain E0275`.


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 codegen/normalization-overflow/recursion-issue-137823.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/codegen/normalization-overflow/recursion-issue-137823.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" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/codegen/normalization-overflow/recursion-issue-137823" "-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 -------------------------------
error[E0275]: overflow evaluating the requirement `ConvertWrap<Ser>: Converter`
   |
   = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`recursion_issue_137823`)
note: required for `ConvertWrap<ConvertWrap<Ser>>` to implement `Converter`
  --> /checkout/tests/ui/codegen/normalization-overflow/recursion-issue-137823.rs:34:9
   |
LL | impl<S> Converter for ConvertWrap<S>
   |         ^^^^^^^^^     ^^^^^^^^^^^^^^
LL | where
LL |     S: Converter,
   |        --------- unsatisfied trait bound introduced here
   = note: 127 redundant requirements hidden
   = note: required for `ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<Ser>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>` to implement `Converter`

error: aborting due to 1 previous error

For more information about this error, try `rustc --explain E0275`.
------------------------------------------
---

17    = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]`
18    = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
19 
- note: the above error was encountered while instantiating `fn virtualize_my_trait::<VirtualWrapper<..., 1>>`
-   --> $DIR/infinite-instantiation-struct-tail-ice-114484.rs:38:18
+ error[E0275]: overflow evaluating the requirement `SomeData<256>: MyTrait`
22    |
- LL |         unsafe { virtualize_my_trait(L, self) }
-    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+    = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`infinite_instantiation_struct_tail_ice_114484`)
+ note: required for `VirtualWrapper<SomeData<256>, 0>` to implement `MyTrait`
+   --> $DIR/infinite-instantiation-struct-tail-ice-114484.rs:36:41
25    |
+ LL | impl<T: MyTrait + 'static, const L: u8> MyTrait for VirtualWrapper<T, L> {
+    |         -------                         ^^^^^^^     ^^^^^^^^^^^^^^^^^^^^
+    |         |
+    |         unsatisfied trait bound introduced here
+    = note: 127 redundant requirements hidden
+    = note: required for `VirtualWrapper<VirtualWrapper<..., 1>, 1>` to implement `MyTrait`
26    = note: the full name for the type has been written to '$TEST_BUILD_DIR/infinite-instantiation-struct-tail-ice-114484.long-type-$LONG_TYPE_HASH.txt'
27    = note: consider using `--verbose` to print the full type name to the console
28 

- error: reached the recursion limit finding the struct tail for `SomeData<256>`
-    |
---
-    |
-    = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]`
-    = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
- 
- note: the above error was encountered while instantiating `fn virtualize_my_trait::<VirtualWrapper<..., 1>>`
-   --> $DIR/infinite-instantiation-struct-tail-ice-114484.rs:38:18
-    |
- LL |         unsafe { virtualize_my_trait(L, self) }
-    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-    |
-    = note: the full name for the type has been written to '$TEST_BUILD_DIR/infinite-instantiation-struct-tail-ice-114484.long-type-$LONG_TYPE_HASH.txt'
-    = note: consider using `--verbose` to print the full type name to the console
- 
- error: reached the recursion limit finding the struct tail for `VirtualWrapper<SomeData<256>, 0>`
-    |
-    = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]`
- 
- error: reached the recursion limit finding the struct tail for `VirtualWrapper<SomeData<256>, 0>`
-    |
-    = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]`
-    = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
- 
- error: reached the recursion limit finding the struct tail for `VirtualWrapper<SomeData<256>, 0>`
-    |
-    = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]`
-    = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
- 
- error: reached the recursion limit finding the struct tail for `VirtualWrapper<SomeData<256>, 0>`
-    |
-    = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]`
-    = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
- 
- note: the above error was encountered while instantiating `fn virtualize_my_trait::<VirtualWrapper<..., 1>>`
-   --> $DIR/infinite-instantiation-struct-tail-ice-114484.rs:38:18
-    |
- LL |         unsafe { virtualize_my_trait(L, self) }
-    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-    |
-    = note: the full name for the type has been written to '$TEST_BUILD_DIR/infinite-instantiation-struct-tail-ice-114484.long-type-$LONG_TYPE_HASH.txt'
-    = note: consider using `--verbose` to print the full type name to the console
- 
- error: reached the recursion limit while instantiating `<VirtualWrapper<..., 1> as MyTrait>::virtualize`
-    |
- note: `<VirtualWrapper<T, L> as MyTrait>::virtualize` defined here
-   --> $DIR/infinite-instantiation-struct-tail-ice-114484.rs:37:5
-    |
- LL |     fn virtualize(&self) -> &dyn MyTrait {
-    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-    = note: the full name for the type has been written to '$TEST_BUILD_DIR/infinite-instantiation-struct-tail-ice-114484.long-type-$LONG_TYPE_HASH.txt'
-    = note: consider using `--verbose` to print the full type name to the console
- 
- error: aborting due to 13 previous errors
- 
+ For more information about this error, try `rustc --explain E0275`.
97 

Note: some mismatched output was normalized before being compared
-   --> /checkout/tests/ui/infinite/infinite-instantiation-struct-tail-ice-114484.rs:36:41
+ error[E0275]: overflow evaluating the requirement `SomeData<256>: MyTrait`
+    = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`infinite_instantiation_struct_tail_ice_114484`)
+ note: required for `VirtualWrapper<SomeData<256>, 0>` to implement `MyTrait`
+   --> $DIR/infinite-instantiation-struct-tail-ice-114484.rs:36:41
+ LL | impl<T: MyTrait + 'static, const L: u8> MyTrait for VirtualWrapper<T, L> {
+    |         -------                         ^^^^^^^     ^^^^^^^^^^^^^^^^^^^^
+    |         |
+    |         unsatisfied trait bound introduced here
+    = note: 127 redundant requirements hidden
+    = note: required for `VirtualWrapper<VirtualWrapper<..., 1>, 1>` to implement `MyTrait`
+ error: aborting due to 5 previous errors
+ For more information about this error, try `rustc --explain E0275`.


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 infinite/infinite-instantiation-struct-tail-ice-114484.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/infinite/infinite-instantiation-struct-tail-ice-114484.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" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/infinite/infinite-instantiation-struct-tail-ice-114484" "-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" "--diagnostic-width=100" "-Zwrite-long-types-to-disk=yes"
stdout: none
--- stderr -------------------------------
error: reached the recursion limit finding the struct tail for `[u8; 256]`
   |
   = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]`
---
   |
   = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]`
   = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`

error[E0275]: overflow evaluating the requirement `SomeData<256>: MyTrait`
   |
   = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`infinite_instantiation_struct_tail_ice_114484`)
note: required for `VirtualWrapper<SomeData<256>, 0>` to implement `MyTrait`
  --> /checkout/tests/ui/infinite/infinite-instantiation-struct-tail-ice-114484.rs:36:41
   |
LL | impl<T: MyTrait + 'static, const L: u8> MyTrait for VirtualWrapper<T, L> {
   |         -------                         ^^^^^^^     ^^^^^^^^^^^^^^^^^^^^
   |         |
   |         unsatisfied trait bound introduced here
   = note: 127 redundant requirements hidden
   = note: required for `VirtualWrapper<VirtualWrapper<..., 1>, 1>` to implement `MyTrait`
   = note: the full name for the type has been written to '/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/infinite/infinite-instantiation-struct-tail-ice-114484/infinite-instantiation-struct-tail-ice-114484.long-type-14339522192580723495.txt'
   = note: consider using `--verbose` to print the full type name to the console

error: aborting due to 5 previous errors

For more information about this error, try `rustc --explain E0275`.
------------------------------------------

---- [ui] tests/ui/infinite/infinite-instantiation-struct-tail-ice-114484.rs stdout end ----
---- [ui] tests/ui/infinite/infinite-instantiation.rs stdout ----
Saved the actual stderr to `/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/infinite/infinite-instantiation/infinite-instantiation.stderr`
diff of stderr:

- error: reached the recursion limit while instantiating `function::<Option<Option<Option<Option<...>>>>>`
-   --> $DIR/infinite-instantiation.rs:22:9
+ error[E0275]: overflow evaluating the requirement `Option<usize>: Copy`
3    |
- LL |         function(counter - 1, t.to_option());
-    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-    |
- note: `function` defined here
-   --> $DIR/infinite-instantiation.rs:20:1
-    |
- LL | fn function<T:ToOpt + Clone>(counter: usize, t: T) {
-    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+    = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`infinite_instantiation`)
+    = note: required for `Option<Option<usize>>` to implement `Copy`
+    = note: 126 redundant requirements hidden
+    = note: required for `Option<Option<Option<Option<Option<...>>>>>` to implement `Copy`
12    = note: the full name for the type has been written to '$TEST_BUILD_DIR/infinite-instantiation.long-type-$LONG_TYPE_HASH.txt'
13    = note: consider using `--verbose` to print the full type name to the console
14 

15 error: aborting due to 1 previous error
16 
---
To only update this specific test, also pass `--test-args infinite/infinite-instantiation.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/infinite/infinite-instantiation.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" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/infinite/infinite-instantiation" "-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" "--diagnostic-width=100" "-Zwrite-long-types-to-disk=yes"
stdout: none
--- stderr -------------------------------
error[E0275]: overflow evaluating the requirement `Option<usize>: Copy`
   |
   = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`infinite_instantiation`)
   = note: required for `Option<Option<usize>>` to implement `Copy`
   = note: 126 redundant requirements hidden
   = note: required for `Option<Option<Option<Option<Option<...>>>>>` to implement `Copy`
   = note: the full name for the type has been written to '/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/infinite/infinite-instantiation/infinite-instantiation.long-type-11352487612766638082.txt'
   = note: consider using `--verbose` to print the full type name to the console

error: aborting due to 1 previous error

For more information about this error, try `rustc --explain E0275`.
------------------------------------------

---- [ui] tests/ui/infinite/infinite-instantiation.rs stdout end ----
---- [ui] tests/ui/recursion/recursive-impl-trait-iterator-by-ref-67552.rs stdout ----
Saved the actual stderr to `/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/recursion/recursive-impl-trait-iterator-by-ref-67552/recursive-impl-trait-iterator-by-ref-67552.stderr`
diff of stderr:

- error: reached the recursion limit while instantiating `rec::<&mut &mut &mut &mut &mut &mut &mut &mut ...>`
-   --> $DIR/recursive-impl-trait-iterator-by-ref-67552.rs:28:9
+ error[E0275]: overflow evaluating the requirement `&mut Empty: Iterator`
3    |
- LL |         rec(identity(&mut it))
-    |         ^^^^^^^^^^^^^^^^^^^^^^
-    |
- note: `rec` defined here
-   --> $DIR/recursive-impl-trait-iterator-by-ref-67552.rs:21:1
-    |
- LL | / fn rec<T>(mut it: T)
- LL | | where
- LL | |     T: Iterator,
-    | |________________^
+    = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`recursive_impl_trait_iterator_by_ref_67552`)
+    = note: required for `&mut &mut Empty` to implement `Iterator`
+    = note: 125 redundant requirements hidden
+    = note: required for `&mut &mut &mut &mut &mut &mut &mut &mut &mut ...` to implement `Iterator`
+    = note: required for `&mut &mut &mut &mut &mut &mut &mut &mut &mut ...` to implement `iter::traits::iterator::IteratorRefSpec`
14    = note: the full name for the type has been written to '$TEST_BUILD_DIR/recursive-impl-trait-iterator-by-ref-67552.long-type-$LONG_TYPE_HASH.txt'
15    = note: consider using `--verbose` to print the full type name to the console
16 

17 error: aborting due to 1 previous error
18 
---
To only update this specific test, also pass `--test-args recursion/recursive-impl-trait-iterator-by-ref-67552.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/recursion/recursive-impl-trait-iterator-by-ref-67552.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" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/recursion/recursive-impl-trait-iterator-by-ref-67552" "-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" "-Copt-level=0" "--diagnostic-width=100" "-Zwrite-long-types-to-disk=yes"
stdout: none
--- stderr -------------------------------
error[E0275]: overflow evaluating the requirement `&mut Empty: Iterator`
   |
   = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`recursive_impl_trait_iterator_by_ref_67552`)
   = note: required for `&mut &mut Empty` to implement `Iterator`
   = note: 125 redundant requirements hidden
   = note: required for `&mut &mut &mut &mut &mut &mut &mut &mut &mut ...` to implement `Iterator`
   = note: required for `&mut &mut &mut &mut &mut &mut &mut &mut &mut ...` to implement `iter::traits::iterator::IteratorRefSpec`
   = note: the full name for the type has been written to '/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/recursion/recursive-impl-trait-iterator-by-ref-67552/recursive-impl-trait-iterator-by-ref-67552.long-type-14857022266261645170.txt'
   = note: consider using `--verbose` to print the full type name to the console

error: aborting due to 1 previous error

For more information about this error, try `rustc --explain E0275`.

@rust-bors

rust-bors Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

☀️ Try build successful (CI)
Build commit: 06631ed (06631eda2bae01bc9db0b09a87327f9565a15dfa)
Base parent: 48c2cee (48c2cee70232ecc3a6a8e285b2e15620b39f82a7)

@rust-timer

Copy link
Copy Markdown
Collaborator

Queued 06631ed with parent 48c2cee, future comparison URL.
There is currently 1 preceding artifact in the queue.
It will probably take at least ~1.4 hours until the benchmark run finishes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. S-waiting-on-perf Status: Waiting on a perf run to be completed. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants