Repository: rust
Issue: diagnostic::on_unimplemented fails to trigger
Labels: A-diagnostics,T-compiler,D-diagnostic-infra

### Code

```Rust
#[diagnostic::on_unimplemented(
    message = "message",
)]
pub trait ProviderLt {}

pub trait ProviderExt {
    fn request<R>(&self) {
        todo!()
    }
}

impl<T: ?Sized + ProviderLt> ProviderExt for T {}

struct A<'a>(&'a ());

struct B; // works

fn main() {
    A(&()).request();
    
    B.request(); // works
}
```


### Current output

```Shell
error[E0599]: the method `request` exists for struct `A<'_>`, but its trait bounds were not satisfied
  --> src/main.rs:19:12
   |
14 | struct A<'a>(&'a ());
   | ------------ method `request` not found for this struct because it doesn't satisfy `A<'_>: ProviderExt` or `A<'_>: ProviderLt`
...
19 |     A(&()).request();
   |            ^^^^^^^ method cannot be called on `A<'_>` due to unsatisfied trait bounds
   |
note: trait bound `A<'_>: ProviderLt` was not satisfied
  --> src/main.rs:12:18
   |
12 | impl<T: ?Sized + ProviderLt> ProviderExt for T {}
   |                  ^^^^^^^^^^  -----------     -
   |                  |
   |                  unsatisfied trait bound introduced here
note: the trait `ProviderLt` must be implemented
  --> src/main.rs:4:1
   |
4  | pub trait ProviderLt {}
   | ^^^^^^^^^^^^^^^^^^^^
   = help: items from traits can only be used if the trait is implemented and in scope
note: `ProviderExt` defines an item `request`, perhaps you need to implement it
  --> src/main.rs:6:1
   |
6  | pub trait ProviderExt {
   | ^^^^^^^^^^^^^^^^^^^^^

error[E0599]: message
  --> src/main.rs:21:7
   |
16 | struct B; // works
   | -------- method `request` not found for this struct because it doesn't satisfy `B: ProviderExt` or `B: ProviderLt`
...
21 |     B.request(); // works
   |       ^^^^^^^ method cannot be called on `B` due to unsatisfied trait bounds
   |
note: trait bound `B: ProviderLt` was not satisfied
  --> src/main.rs:12:18
   |
12 | impl<T: ?Sized + ProviderLt> ProviderExt for T {}
   |                  ^^^^^^^^^^  -----------     -
   |                  |
   |                  unsatisfied trait bound introduced here
note: the trait `ProviderLt` must be implemented
  --> src/main.rs:4:1
   |
4  | pub trait ProviderLt {}
   | ^^^^^^^^^^^^^^^^^^^^
   = help: items from traits can only be used if the trait is implemented and in scope
note: `ProviderExt` defines an item `request`, perhaps you need to implement it
  --> src/main.rs:6:1
   |
6  | pub trait ProviderExt {
   | ^^^^^^^^^^^^^^^^^^^^^

For more information about this error, try `rustc --explain E0599`.
```


### Desired output

```Shell
The first error should also be using the "message" message like the second one.
```


### Rationale and extra context

Playground link: https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=f9313422f1b0da95507832b37b234c30

### Other cases

_No response_

### Rust Version

```Shell
rustc 1.81.0 (eeb90cda1 2024-09-04)
binary: rustc
commit-hash: eeb90cda1969383f56a2637cbd3037bdf598841c
commit-date: 2024-09-04
host: x86_64-unknown-linux-gnu
release: 1.81.0
LLVM version: 18.1.7
```


### Anything else?

_No response_