rust/tests/ui/try-block
Esteban Küber 1d860902f6 When a trait isn't implemented, but another similar impl is found, point at it:
```
error[E0277]: the trait bound `u32: Trait` is not satisfied
  --> $DIR/trait_objects_fail.rs:26:9
   |
LL |     foo(&10_u32);
   |         ^^^^^^^ the trait `Trait` is not implemented for `u32`
   |
help: the trait `Trait<12>` is not implemented for `u32`
      but trait `Trait<2>` is implemented for it
  --> $DIR/trait_objects_fail.rs:7:1
   |
LL | impl Trait<2> for u32 {}
   | ^^^^^^^^^^^^^^^^^^^^^
   = note: required for the cast from `&u32` to `&dyn Trait`
```

Pointing at the `impl` definition that *could* apply given a different self type is particularly useful when it has a blanket self type, as it might not be obvious and is not trivially greppable:

```
error[E0277]: the trait bound `RawImpl<_>: Raw<_>` is not satisfied
  --> $DIR/issue-62742.rs:4:5
   |
LL |     WrongImpl::foo(0i32);
   |     ^^^^^^^^^ unsatisfied trait bound
   |
help: the trait `Raw<_>` is not implemented for `RawImpl<_>`
      but trait `Raw<[_]>` is implemented for it
  --> $DIR/issue-62742.rs:29:1
   |
LL | impl<T> Raw<[T]> for RawImpl<T> {
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: required by a bound in `SafeImpl`
  --> $DIR/issue-62742.rs:33:35
   |
LL | pub struct SafeImpl<T: ?Sized, A: Raw<T>>(PhantomData<(A, T)>);
   |                                   ^^^^^^ required by this bound in `SafeImpl`
```
2025-10-31 20:38:31 +00:00
..
issue-45124.rs replace //@ compile-flags: --edition with //@ edition 2025-04-10 09:56:37 +02:00
try-block-bad-lifetime.rs replace //@ compile-flags: --edition with //@ edition 2025-04-10 09:56:37 +02:00
try-block-bad-lifetime.stderr Peel off explicit (or implicit) deref before suggesting clone on move error in borrowck 2024-07-26 14:41:56 -04:00
try-block-bad-type.rs replace //@ compile-flags: --edition with //@ edition 2025-04-10 09:56:37 +02:00
try-block-bad-type.stderr When a trait isn't implemented, but another similar impl is found, point at it: 2025-10-31 20:38:31 +00:00
try-block-catch.rs replace //@ compile-flags: --edition with //@ edition 2025-04-10 09:56:37 +02:00
try-block-catch.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
try-block-in-edition2015.rs replace //@ compile-flags: --edition with //@ edition 2025-04-10 09:56:37 +02:00
try-block-in-edition2015.stderr
try-block-in-match-arm.rs replace //@ compile-flags: --edition with //@ edition 2025-04-10 09:56:37 +02:00
try-block-in-match.rs replace //@ compile-flags: --edition with //@ edition 2025-04-10 09:56:37 +02:00
try-block-in-return.rs replace //@ compile-flags: --edition with //@ edition 2025-04-10 09:56:37 +02:00
try-block-in-while.rs replace //@ compile-flags: --edition with //@ edition 2025-04-10 09:56:37 +02:00
try-block-in-while.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
try-block-maybe-bad-lifetime.rs replace //@ compile-flags: --edition with //@ edition 2025-04-10 09:56:37 +02:00
try-block-maybe-bad-lifetime.stderr Tweak E0597 2023-01-15 19:46:20 +00:00
try-block-opt-init.rs replace //@ compile-flags: --edition with //@ edition 2025-04-10 09:56:37 +02:00
try-block-opt-init.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
try-block-type-error.rs replace //@ compile-flags: --edition with //@ edition 2025-04-10 09:56:37 +02:00
try-block-type-error.stderr Stop inverting expectation in normalization errors 2024-10-16 13:44:56 -04:00
try-block-unreachable-code-lint.rs replace //@ compile-flags: --edition with //@ edition 2025-04-10 09:56:37 +02:00
try-block-unreachable-code-lint.stderr
try-block-unused-delims.fixed replace //@ compile-flags: --edition with //@ edition 2025-04-10 09:56:37 +02:00
try-block-unused-delims.rs replace //@ compile-flags: --edition with //@ edition 2025-04-10 09:56:37 +02:00
try-block-unused-delims.stderr
try-block.rs replace //@ compile-flags: --edition with //@ edition 2025-04-10 09:56:37 +02:00
try-is-identifier-edition2015.rs replace //@ compile-flags: --edition with //@ edition 2025-04-10 09:56:37 +02:00