diff options
| author | Matthias Krüger <476013+matthiaskrgr@users.noreply.github.com> | 2025-09-06 13:03:15 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-09-06 13:03:15 +0200 |
| commit | bc0dfaa048e0549d7d8b275bc240ba4862925307 (patch) | |
| tree | b6e11a9242e94c0aa68c31fb418e85690b9db027 /compiler/rustc_parse/src | |
| parent | 020edbe4cf41aef407ac57eeb90c9a244c55d103 (diff) | |
| parent | fa6986ebe749bc59d569e3f75d0b5764f2601d78 (diff) | |
| download | rust-bc0dfaa048e0549d7d8b275bc240ba4862925307.tar.gz rust-bc0dfaa048e0549d7d8b275bc240ba4862925307.zip | |
Rollup merge of #144801 - estebank:issue-144734, r=spastorino
Suggest bounds in more cases, accounting for type parameters referenced in predicate
Use a `ty::Visitor` to see if the failed predicate references a type parameter. If it does, then we only suggest adding a bound to an (associated) item only if the referenced parameter is present in its generics.
Provide adding bound suggestion in trait and impl associated functions in cases we previously weren't:
```
error[E0277]: `?` couldn't convert the error to `ApplicationError`
--> $DIR/suggest-complex-bound-on-method.rs:18:16
|
LL | t.run()?;
| -----^ the trait `From<<T as Trait>::Error>` is not implemented for `ApplicationError`
| |
| this can't be annotated with `?` because it has type `Result<_, <T as Trait>::Error>`
|
note: `ApplicationError` needs to implement `From<<T as Trait>::Error>`
--> $DIR/suggest-complex-bound-on-method.rs:12:1
|
LL | enum ApplicationError {
| ^^^^^^^^^^^^^^^^^^^^^
= note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
help: consider introducing a `where` clause, but there might be an alternative better way to express this requirement
|
LL | fn thing<T: Trait>(&self, t: T) -> Result<(), ApplicationError> where ApplicationError: From<<T as Trait>::Error> {
| +++++++++++++++++++++++++++++++++++++++++++++++++
```
Fix rust-lang/rust#144734.
Diffstat (limited to 'compiler/rustc_parse/src')
0 files changed, 0 insertions, 0 deletions
