new_ret_no_self: allow Self in inner type for impl Trait return types
Check the inner types of associated types of a trait when checking for Self in the return type of a `new` method. This means that the following will no longer warn:
```rust
trait Trait {
type Inner;
}
struct S;
impl S {
fn new() -> impl Trait<Inner = Option<Self>> {
struct TraitImpl;
impl Trait for TraitImpl {
type Inner = Option<S>;
}
TraitImpl
}
}
```
```rust
#![feature(async_await)]
struct Connection;
impl Connection {
async fn new() -> Result<Self, ()> {
Ok(S)
}
}
```
closes #4359
changelog: fix `new_ret_no_self` lint for async `new` functions.
|
||
|---|---|---|
| .. | ||
| auxiliary | ||
| ui | ||
| ui-toml | ||
| compile-test.rs | ||
| dogfood.rs | ||
| fmt.rs | ||
| matches.rs | ||
| missing-test-files.rs | ||
| needless_continue_helpers.rs | ||
| versioncheck.rs | ||