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

This comment has been minimized.

@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

This comment has been minimized.

@rust-timer

Copy link
Copy Markdown
Collaborator

Finished benchmarking commit (06631ed): comparison URL.

Overall result: ❌ regressions - 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 rustc-perf
@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.1% [0.3%, 8.6%] 29
Regressions ❌
(secondary)
19.0% [0.3%, 242.7%] 39
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 1.1% [0.3%, 8.6%] 29

Max RSS (memory usage)

Results (primary -2.3%, secondary -0.1%)

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)
2.8% [1.3%, 3.9%] 4
Improvements ✅
(primary)
-2.3% [-3.3%, -1.2%] 7
Improvements ✅
(secondary)
-4.0% [-4.6%, -3.5%] 3
All ❌✅ (primary) -2.3% [-3.3%, -1.2%] 7

Cycles

Results (primary 3.5%, secondary 49.8%)

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

mean range count
Regressions ❌
(primary)
3.5% [2.1%, 7.0%] 4
Regressions ❌
(secondary)
54.4% [2.1%, 217.9%] 12
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-5.9% [-5.9%, -5.9%] 1
All ❌✅ (primary) 3.5% [2.1%, 7.0%] 4

Binary size

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

Bootstrap: 490.231s -> 491.472s (0.25%)
Artifact size: 391.34 MiB -> 389.63 MiB (-0.44%)

@rustbot rustbot added perf-regression Performance regression. and removed S-waiting-on-perf Status: Waiting on a perf run to be completed. labels Jul 13, 2026
@mumbleskates

Copy link
Copy Markdown
Contributor Author

ouch, that really did screw up perf.

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

Labels

perf-regression Performance regression. 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.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants