Skip to content

Rollup of 8 pull requests - #163984

Closed
JonathanBrouwer wants to merge 21 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-6la6SZA
Closed

JonathanBrouwer wants to merge 21 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-6la6SZA

Conversation

@JonathanBrouwer

Copy link
Copy Markdown
Member

Successful merges:

Failed merges:

r? @ghost

Create a similar rollup

ada4a and others added 21 commits September 30, 2026 13:41
When `TypeVisitable` is implemented but `GenericTypeVisitable` isn't,
the lint (which we'll add soon) recommends adding
`#[derive(GenericTypeVisitable)]`. However, this suggestion is incorrect
for types whose impls ought to be trivial. There, the problem occurs
because the type was added to `TrivialTypeTraversalImpls!` in
`macros.rs`, which added the `TypeVisitable` impl, but wasn't added to
`trivial_impls!` in `generic_visit.rs`, such that the
`GenericTypeVisitable` impl wasn't added.

Imo, the root cause of this problem is that we have two separate macros
for adding trivial impls. So this commit merges them into one, by making
`TrivialTypeTraversalImpls!` add a `GenericTypeVisitable` impl as well.

RE: `Variance`: its `GenericTypeVisitable` impl is now provided by
`TrivialTypeTraversalImpls!`, making the derive unnecessary.

RE: `rustc_hash::FxBuildHasher`: its `GenericTypeVisitable` impl ended
up being removed, because `TypeVisitable` can't be implemented due to it
not implemnting `Debug`. This shouldn't be a problem however, as
`{Generic,}TypeVisitable` should always be implemented in pairs anyway.
I confirmed this by removing the impl from `ra-ap-rustc_type_ir` and
`cargo check`-ing r-a.
The missing impl for arrays was (indirectly) highlighted by the test
suite, the rest -- by the `#[deny]`
Carry more information for well-formed obligations coming from expressions.
Reduces the number of errors being emitted by a single unmet `Sized` (or other) bound in method call chains.
…ff, r=bjorn3

Fix COFF renaming of decorated (stdcall/fastcall/vectorcall) exports

rust-lang#163188 handled Arm64EC's `#` mangling in `symbol_edit`, but COFF decoration support there
was still incomplete: matching against exported symbols only stripped the i686 `_` prefix,
so `stdcall`/`fastcall`/`vectorcall` exports were wrongly treated as internal and renamed.
`link.rs` already had the full undecoration, so this shares it as
`symbol_export::undecorate_coff_symbol`, uses it from both places, and covers the
decorated calling conventions in the run-make test.

LLM disclosure: Initially, I mistakenly over-scoped the extraction of the shared undecorate logic; the LLM helped me narrow the scope and ultimately pinpoint a single function, and I am currently using the streamlined version it suggested. Additionally, the LLM assisted me in designing the specific test functions within `decorated_lib.rs`.

r? @bjorn3
…i-obk

Include enclosing item's context on const errors

On const errors, when they occur on an item that might be relevant, like in an associated const, render the line of the enclosing item in the error:

```
error[E0080]: evaluation panicked: not yet implemented
  --> $DIR/ice-normalize-inherent-assoc-const.rs:10:28
   |
LL | impl Foo {
LL |     const ASSOC_C: usize = todo!();
   |                            ^^^^^^^ evaluation of `Foo::ASSOC_C` failed here
```
```
error[E0080]: writing to ALLOC$ID which is read-only
  --> $DIR/issue-100313.rs:18:5
   |
LL | const _: () = {
LL |     let x = T::<{ &true }>;
LL |     x.set_false();
   |     ^^^^^^^^^^^^^ evaluation of `_` failed inside this call
   |
note: inside `T::<&true>::set_false`
  --> $DIR/issue-100313.rs:11:13
   |
LL | impl<const B: &'static bool> T<B> {
LL |     const fn set_false(&self) {
LL |         unsafe {
LL |             *(B as *const bool as *mut bool) = false;
   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the failure occurred here
```
 Silence redundant failed obligations on the same statement

Fix rust-lang#84346, fix rust-lang#105753.

On multiple unment obligations in the same method chain, only emit one. On unmet `Sized` obligations on a binding, its type and its init expression, only emit one.
…le, r=JonathanBrouwer

Add `rustc::missing_generic_type_visitable` lint

Best reviewed commit-by-commit.

The CI will probably complain about the TODOs, but I've added them deliberately, as a way to ask questions.

r? @JonathanBrouwer
cc @rust-lang/rust-analyzer
mips: make `Complex<T>` ABI match GCC

tracking issue: rust-lang#154023

The implementation is consistent with GCC and clang 24 (but not clang <= 23). Validated with abi-cafe.

r? beetrees
…ke-2-partial, r=oli-obk

only make `RustaceansAreAwesome` satisfy trait clauses

Fixes rust-lang#163550 but unfortunately partially un-fixes a variant of rust-lang#161621 that hadn't been reported. I have a followup to re-fix that, but I ended up deciding that it would probably be easier to review separately; I'll open a PR for that later.

The variant in question:
```rust
trait HasAssoc {
    type Assoc;
}

trait Parent<T> {}

trait Trait
where
    (Self,): HasAssoc<Assoc = str>,
    Self: Parent<<<(Self,) as HasAssoc>::Assoc as ToOwned>::Owned>,
{
    fn f(&self);
    //~^ ERROR: the trait bound `<(RustaceansAreAwesome,) as HasAssoc>::Assoc: Clone` is not satisfied
    //~| NOTE: required for `<(RustaceansAreAwesome,) as HasAssoc>::Assoc` to implement `ToOwned`
}
```
This fails to prove `<(RustaceansAreAwesome,) as HasAssoc>::Assoc: Owned` because it can't normalize that alias to `str`. The followup will re-add projections as necessary for this in a hopefully-non-breaking way.
Condense AdtDef lang item checks into one match

Trading one hash table lookup for 8 array element accesses. Efficiency wise probably not useful, but the code is nicer imo
…features, r=folkertdev

Add `bf16` to arm features

A 32bit armv8 target can have support for `bf16`

r? folkertdev
@rust-bors rust-bors Bot added the rollup A PR which is a rollup label Oct 8, 2026
@rustbot rustbot added A-run-make Area: port run-make Makefiles to rmake.rs F-explicit_tail_calls `#![feature(explicit_tail_calls)]` 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 Oct 8, 2026
@JonathanBrouwer

Copy link
Copy Markdown
Member Author

@bors r+ p=5 force

Trying commonly failed jobs
@bors try jobs=dist-various-1,test-various,test-x86_64-gnu-aux,test-x86_64-msvc-1,test-aarch64-apple-1,test-aarch64-apple-2,test-x86_64-mingw-1,test-i686-msvc,test-armhf-gnu,test-x86_64-gnu-llvm-22-3

@rust-bors

rust-bors Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

📌 Commit 5636514 has been approved by JonathanBrouwer

It is now in the queue for this repository.

@rust-bors rust-bors Bot added the S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. label Oct 8, 2026
@rust-bors rust-bors Bot removed the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Oct 8, 2026
@rust-bors

This comment has been minimized.

rust-bors Bot pushed a commit that referenced this pull request Oct 8, 2026
Rollup of 8 pull requests


try-job: dist-various-1
try-job: test-various
try-job: test-x86_64-gnu-aux
try-job: test-x86_64-msvc-1
try-job: test-aarch64-apple-1
try-job: test-aarch64-apple-2
try-job: test-x86_64-mingw-1
try-job: test-i686-msvc
try-job: test-armhf-gnu
try-job: test-x86_64-gnu-llvm-22-3
@rust-log-analyzer

Copy link
Copy Markdown
Collaborator

The job test-x86_64-gnu-llvm-22-3 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/traits/next-solver/overflow/incorrect-old-solver-caching-ice-148095.rs#next stdout ----
Saved the actual stderr to `/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/traits/next-solver/overflow/incorrect-old-solver-caching-ice-148095.next/incorrect-old-solver-caching-ice-148095.next.stderr`
diff of stderr:

93 LL |     Quantity<Self::Output>:, f32: Mul<S>
94    |                            +++++++++++++
95 
- error[E0277]: cannot multiply `f32` by `S`
-    |
-    = help: the trait `Mul<S>` is not implemented for `f32`
- help: consider extending the `where` clause, but there might be an alternative better way to express this requirement
-   --> $DIR/incorrect-old-solver-caching-ice-148095.rs:27:28
-    |
- LL |     Quantity<Self::Output>:, f32: Mul<S>
-    |                            +++++++++++++
- 
105 error: the type `Quantity<<f32 as Mul<S>>::Output>` is not well-formed
106   --> $DIR/incorrect-old-solver-caching-ice-148095.rs:30:21
107    |

120 LL |     Quantity<Self::Output>:, f32: Mul<S>
121    |                            +++++++++++++
122 
- error: aborting due to 11 previous errors
+ error: aborting due to 10 previous errors
124 
---
To only update this specific test, also pass `--test-args traits/next-solver/overflow/incorrect-old-solver-caching-ice-148095.rs`

error in revision `next`: 1 errors occurred comparing output.
status: exit status: 1
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage1/bin/rustc" "/checkout/tests/ui/traits/next-solver/overflow/incorrect-old-solver-caching-ice-148095.rs" "-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/x86_64-unknown-linux-gnu/stage1" "--target=x86_64-unknown-linux-gnu" "--cfg" "next" "--check-cfg" "cfg(test,FALSE,old,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/x86_64-unknown-linux-gnu/test/ui/traits/next-solver/overflow/incorrect-old-solver-caching-ice-148095.next" "-Znext-solver=coherence" "-A" "unused" "-W" "unused_attributes" "-A" "internal_features" "-A" "incomplete_features" "-A" "unused_parens" "-A" "unused_braces" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "--edition=2015" "-Znext-solver"
stdout: none
--- stderr -------------------------------
error[E0207]: the type parameter `S` is not constrained by the impl trait, self type, or predicates
##[error]  --> /checkout/tests/ui/traits/next-solver/overflow/incorrect-old-solver-caching-ice-148095.rs:25:6
   |
LL | impl<S> Mul<Quantity<<f32 as Mul<S>>::Output>> for f32
   |      ^ unconstrained type parameter

error[E0277]: cannot multiply `f32` by `S`
##[error]  --> /checkout/tests/ui/traits/next-solver/overflow/incorrect-old-solver-caching-ice-148095.rs:25:13
   |
LL | impl<S> Mul<Quantity<<f32 as Mul<S>>::Output>> for f32
   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no implementation for `f32 * S`
   |
   = help: the trait `Mul<S>` is not implemented for `f32`
help: consider extending the `where` clause, but there might be an alternative better way to express this requirement
   |
LL |     Quantity<Self::Output>:, f32: Mul<S>
   |                            +++++++++++++

error[E0277]: cannot multiply `f32` by `S`
##[error]  --> /checkout/tests/ui/traits/next-solver/overflow/incorrect-old-solver-caching-ice-148095.rs:30:5
   |
LL |     fn mul(self, _: Quantity<<f32 as Mul<S>>::Output>) {}
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no implementation for `f32 * S`
   |
   = help: the trait `Mul<S>` is not implemented for `f32`
help: consider extending the `where` clause, but there might be an alternative better way to express this requirement
   |
LL |     Quantity<Self::Output>:, f32: Mul<S>
   |                            +++++++++++++

error[E0276]: impl has stricter requirements than trait
##[error]  --> /checkout/tests/ui/traits/next-solver/overflow/incorrect-old-solver-caching-ice-148095.rs:30:5
   |
LL |     fn mul(self, _: Quantity<<f32 as Mul<S>>::Output>) {}
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ impl has extra requirement `Quantity<<f32 as Mul<S>>::Output> well-formed`

error[E0277]: cannot multiply `f32` by `S`
##[error]  --> /checkout/tests/ui/traits/next-solver/overflow/incorrect-old-solver-caching-ice-148095.rs:25:13
   |
LL | impl<S> Mul<Quantity<<f32 as Mul<S>>::Output>> for f32
   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no implementation for `f32 * S`
   |
   = help: the trait `Mul<S>` is not implemented for `f32`
   = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
help: consider extending the `where` clause, but there might be an alternative better way to express this requirement
   |
LL |     Quantity<Self::Output>:, f32: Mul<S>
   |                            +++++++++++++

error[E0277]: cannot multiply `f32` by `S`
##[error]  --> /checkout/tests/ui/traits/next-solver/overflow/incorrect-old-solver-caching-ice-148095.rs:30:30
   |
LL |     fn mul(self, _: Quantity<<f32 as Mul<S>>::Output>) {}
   |                              ^^^^^^^^^^^^^^^^^^^^^^^ no implementation for `f32 * S`
   |
   = help: the trait `Mul<S>` is not implemented for `f32`
help: consider extending the `where` clause, but there might be an alternative better way to express this requirement
   |
LL |     Quantity<Self::Output>:, f32: Mul<S>
   |                            +++++++++++++

error[E0277]: cannot multiply `f32` by `Quantity<<f32 as Mul<S>>::Output>`
##[error]  --> /checkout/tests/ui/traits/next-solver/overflow/incorrect-old-solver-caching-ice-148095.rs:27:5
   |
LL |     Quantity<Self::Output>:
   |     ^^^^^^^^^^^^^^^^^^^^^^ no implementation for `f32 * Quantity<<f32 as Mul<S>>::Output>`
   |
   = help: the trait `Mul<Quantity<<f32 as Mul<S>>::Output>>` is not implemented for `f32`
note: required by a bound in `Quantity`
  --> /checkout/tests/ui/traits/next-solver/overflow/incorrect-old-solver-caching-ice-148095.rs:24:17
   |
LL | struct Quantity<S>(S);
   |                 ^ required by this bound in `Quantity`
help: consider extending the `where` clause, but there might be an alternative better way to express this requirement
   |
LL |     Quantity<Self::Output>:, f32: Mul<Quantity<<f32 as Mul<S>>::Output>>
   |                            +++++++++++++++++++++++++++++++++++++++++++++

error[E0277]: cannot multiply `f32` by `S`
##[error]  --> /checkout/tests/ui/traits/next-solver/overflow/incorrect-old-solver-caching-ice-148095.rs:27:5
   |
LL |     Quantity<Self::Output>:
   |     ^^^^^^^^^^^^^^^^^^^^^^ no implementation for `f32 * S`
   |
   = help: the trait `Mul<S>` is not implemented for `f32`
note: required by a bound in `Quantity`
  --> /checkout/tests/ui/traits/next-solver/overflow/incorrect-old-solver-caching-ice-148095.rs:24:17
   |
LL | struct Quantity<S>(S);
   |                 ^ required by this bound in `Quantity`
help: consider extending the `where` clause, but there might be an alternative better way to express this requirement
   |
LL |     Quantity<Self::Output>:, f32: Mul<S>
   |                            +++++++++++++

error: the type `Quantity<<f32 as Mul<S>>::Output>` is not well-formed
##[error]  --> /checkout/tests/ui/traits/next-solver/overflow/incorrect-old-solver-caching-ice-148095.rs:30:21
   |
LL |     fn mul(self, _: Quantity<<f32 as Mul<S>>::Output>) {}
   |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0277]: cannot multiply `f32` by `S`
##[error]  --> /checkout/tests/ui/traits/next-solver/overflow/incorrect-old-solver-caching-ice-148095.rs:30:21
   |
LL |     fn mul(self, _: Quantity<<f32 as Mul<S>>::Output>) {}
   |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no implementation for `f32 * S`
   |
   = help: the trait `Mul<S>` is not implemented for `f32`
help: consider extending the `where` clause, but there might be an alternative better way to express this requirement
   |
LL |     Quantity<Self::Output>:, f32: Mul<S>
   |                            +++++++++++++

error: aborting due to 10 previous errors

Some errors have detailed explanations: E0207, E0276, E0277.

@rust-log-analyzer

Copy link
Copy Markdown
Collaborator

The job test-aarch64-gnu-llvm-22-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/traits/next-solver/overflow/incorrect-old-solver-caching-ice-148095.rs#next stdout ----
Saved the actual stderr to `/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/traits/next-solver/overflow/incorrect-old-solver-caching-ice-148095.next/incorrect-old-solver-caching-ice-148095.next.stderr`
diff of stderr:

93 LL |     Quantity<Self::Output>:, f32: Mul<S>
94    |                            +++++++++++++
95 
- error[E0277]: cannot multiply `f32` by `S`
-    |
-    = help: the trait `Mul<S>` is not implemented for `f32`
- help: consider extending the `where` clause, but there might be an alternative better way to express this requirement
-   --> $DIR/incorrect-old-solver-caching-ice-148095.rs:27:28
-    |
- LL |     Quantity<Self::Output>:, f32: Mul<S>
-    |                            +++++++++++++
- 
105 error: the type `Quantity<<f32 as Mul<S>>::Output>` is not well-formed
106   --> $DIR/incorrect-old-solver-caching-ice-148095.rs:30:21
107    |

120 LL |     Quantity<Self::Output>:, f32: Mul<S>
121    |                            +++++++++++++
122 
- error: aborting due to 11 previous errors
+ error: aborting due to 10 previous errors
124 
---
To only update this specific test, also pass `--test-args traits/next-solver/overflow/incorrect-old-solver-caching-ice-148095.rs`

error in revision `next`: 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/overflow/incorrect-old-solver-caching-ice-148095.rs" "-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,old,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/overflow/incorrect-old-solver-caching-ice-148095.next" "-Znext-solver=coherence" "-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=2015" "-Znext-solver"
stdout: none
--- stderr -------------------------------
error[E0207]: the type parameter `S` is not constrained by the impl trait, self type, or predicates
##[error]  --> /checkout/tests/ui/traits/next-solver/overflow/incorrect-old-solver-caching-ice-148095.rs:25:6
   |
LL | impl<S> Mul<Quantity<<f32 as Mul<S>>::Output>> for f32
   |      ^ unconstrained type parameter

error[E0277]: cannot multiply `f32` by `S`
##[error]  --> /checkout/tests/ui/traits/next-solver/overflow/incorrect-old-solver-caching-ice-148095.rs:25:13
   |
LL | impl<S> Mul<Quantity<<f32 as Mul<S>>::Output>> for f32
   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no implementation for `f32 * S`
   |
   = help: the trait `Mul<S>` is not implemented for `f32`
help: consider extending the `where` clause, but there might be an alternative better way to express this requirement
   |
LL |     Quantity<Self::Output>:, f32: Mul<S>
   |                            +++++++++++++

error[E0277]: cannot multiply `f32` by `S`
##[error]  --> /checkout/tests/ui/traits/next-solver/overflow/incorrect-old-solver-caching-ice-148095.rs:30:5
   |
LL |     fn mul(self, _: Quantity<<f32 as Mul<S>>::Output>) {}
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no implementation for `f32 * S`
   |
   = help: the trait `Mul<S>` is not implemented for `f32`
help: consider extending the `where` clause, but there might be an alternative better way to express this requirement
   |
LL |     Quantity<Self::Output>:, f32: Mul<S>
   |                            +++++++++++++

error[E0276]: impl has stricter requirements than trait
##[error]  --> /checkout/tests/ui/traits/next-solver/overflow/incorrect-old-solver-caching-ice-148095.rs:30:5
   |
LL |     fn mul(self, _: Quantity<<f32 as Mul<S>>::Output>) {}
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ impl has extra requirement `Quantity<<f32 as Mul<S>>::Output> well-formed`

error[E0277]: cannot multiply `f32` by `S`
##[error]  --> /checkout/tests/ui/traits/next-solver/overflow/incorrect-old-solver-caching-ice-148095.rs:25:13
   |
LL | impl<S> Mul<Quantity<<f32 as Mul<S>>::Output>> for f32
   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no implementation for `f32 * S`
   |
   = help: the trait `Mul<S>` is not implemented for `f32`
   = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
help: consider extending the `where` clause, but there might be an alternative better way to express this requirement
   |
LL |     Quantity<Self::Output>:, f32: Mul<S>
   |                            +++++++++++++

error[E0277]: cannot multiply `f32` by `S`
##[error]  --> /checkout/tests/ui/traits/next-solver/overflow/incorrect-old-solver-caching-ice-148095.rs:30:30
   |
LL |     fn mul(self, _: Quantity<<f32 as Mul<S>>::Output>) {}
   |                              ^^^^^^^^^^^^^^^^^^^^^^^ no implementation for `f32 * S`
   |
   = help: the trait `Mul<S>` is not implemented for `f32`
help: consider extending the `where` clause, but there might be an alternative better way to express this requirement
   |
LL |     Quantity<Self::Output>:, f32: Mul<S>
   |                            +++++++++++++

error[E0277]: cannot multiply `f32` by `Quantity<<f32 as Mul<S>>::Output>`
##[error]  --> /checkout/tests/ui/traits/next-solver/overflow/incorrect-old-solver-caching-ice-148095.rs:27:5
   |
LL |     Quantity<Self::Output>:
   |     ^^^^^^^^^^^^^^^^^^^^^^ no implementation for `f32 * Quantity<<f32 as Mul<S>>::Output>`
   |
   = help: the trait `Mul<Quantity<<f32 as Mul<S>>::Output>>` is not implemented for `f32`
note: required by a bound in `Quantity`
  --> /checkout/tests/ui/traits/next-solver/overflow/incorrect-old-solver-caching-ice-148095.rs:24:17
   |
LL | struct Quantity<S>(S);
   |                 ^ required by this bound in `Quantity`
help: consider extending the `where` clause, but there might be an alternative better way to express this requirement
   |
LL |     Quantity<Self::Output>:, f32: Mul<Quantity<<f32 as Mul<S>>::Output>>
   |                            +++++++++++++++++++++++++++++++++++++++++++++

error[E0277]: cannot multiply `f32` by `S`
##[error]  --> /checkout/tests/ui/traits/next-solver/overflow/incorrect-old-solver-caching-ice-148095.rs:27:5
   |
LL |     Quantity<Self::Output>:
   |     ^^^^^^^^^^^^^^^^^^^^^^ no implementation for `f32 * S`
   |
   = help: the trait `Mul<S>` is not implemented for `f32`
note: required by a bound in `Quantity`
  --> /checkout/tests/ui/traits/next-solver/overflow/incorrect-old-solver-caching-ice-148095.rs:24:17
   |
LL | struct Quantity<S>(S);
   |                 ^ required by this bound in `Quantity`
help: consider extending the `where` clause, but there might be an alternative better way to express this requirement
   |
LL |     Quantity<Self::Output>:, f32: Mul<S>
   |                            +++++++++++++

error: the type `Quantity<<f32 as Mul<S>>::Output>` is not well-formed
##[error]  --> /checkout/tests/ui/traits/next-solver/overflow/incorrect-old-solver-caching-ice-148095.rs:30:21
   |
LL |     fn mul(self, _: Quantity<<f32 as Mul<S>>::Output>) {}
   |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0277]: cannot multiply `f32` by `S`
##[error]  --> /checkout/tests/ui/traits/next-solver/overflow/incorrect-old-solver-caching-ice-148095.rs:30:21
   |
LL |     fn mul(self, _: Quantity<<f32 as Mul<S>>::Output>) {}
   |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no implementation for `f32 * S`
   |
   = help: the trait `Mul<S>` is not implemented for `f32`
help: consider extending the `where` clause, but there might be an alternative better way to express this requirement
   |
LL |     Quantity<Self::Output>:, f32: Mul<S>
   |                            +++++++++++++

error: aborting due to 10 previous errors

Some errors have detailed explanations: E0207, E0276, E0277.

@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-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Oct 8, 2026
@rust-bors

rust-bors Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

PR #163913, which is a member of this rollup, was unapproved.

This rollup was thus unapproved.

@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 Oct 8, 2026
@rust-bors rust-bors Bot added the S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. label Oct 8, 2026
@rust-bors

rust-bors Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

💔 Test for 803a89c failed: CI. Failed jobs:

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

Labels

A-run-make Area: port run-make Makefiles to rmake.rs F-explicit_tail_calls `#![feature(explicit_tail_calls)]` rollup A PR which is a rollup 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. 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.

10 participants