rust/tests/ui/resolve/issue-55673.fixed
Esteban Küber 781e86477c Suggest trait bounds for used associated type on type param
Fix #101351.

When an associated type on a type parameter is used, and the type
parameter isn't constrained by the correct trait, suggest the
appropriate trait bound:

```
error[E0220]: associated type `Associated` not found for `T`
 --> file.rs:6:15
  |
6 |     field: T::Associated,
  |               ^^^^^^^^^^ there is a similarly named associated type `Associated` in the trait `Foo`
  |
help: consider restricting type parameter `T`
  |
5 | struct Generic<T: Foo> {
  |                 +++++
  ```

When an associated type on a type parameter has a typo, suggest fixing
it:

```
error[E0220]: associated type `Baa` not found for `T`
  --> $DIR/issue-55673.rs:9:8
   |
LL |     T::Baa: std::fmt::Debug,
   |        ^^^ there is a similarly named associated type `Bar` in the trait `Foo`
   |
help: change the associated type name to use `Bar` from `Foo`
   |
LL |     T::Bar: std::fmt::Debug,
   |        ~~~
```
2023-10-13 19:13:56 +00:00

22 lines
304 B
Rust

// run-rustfix
#![allow(dead_code)]
trait Foo {
type Bar;
}
fn foo<T: Foo>()
where
T::Bar: std::fmt::Debug,
//~^ ERROR associated type `Baa` not found for `T`
{
}
fn bar<T>()
where
T::Bar: std::fmt::Debug, T: Foo
//~^ ERROR associated type `Baa` not found for `T`
{
}
fn main() {}