Commit f2938c5
committed
Auto merge of #152996 - mu001999-contrib:feat/extend-import-self, r=petrochenkov
Replacing `self` overwriting with proper resolution
Reference PR:
- rust-lang/reference#2221
As a follow-up PR to rust-lang/rust#146972 ([step 1](rust-lang/rust#152996 (comment))), after this PR:
~~1. Trailing `self` can appear in paths (as the consensus in rust-lang/rust#146972 (comment) (in future)
~~2. [E0429](https://doc.rust-lang.org/stable/error_codes/E0429.html#error-code-e0429) will be no longer emitted, `use ...::self [as target];` will be equivalent to `use ...::{self [as target]};`~~ (in future)
3. Things like `struct S {}; use S::{self as Other};` will be rejected
---
This PR used to add a new lint `redundant_self`, which would lint `use ...::self [as target];` and `use ...::{self [as target]};`, and fixes all warnings emitted by this lint.
But this lint and clippy lint [unnecessary_self_imports](https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_self_imports) have some overlap. And `use std::io::self;` is not equivalent to `use std::io` in fact for now, the new lint will also cause the following known issue:
> Removing `::{self}` will cause any non-module items at the same path to also be imported. This might cause a naming conflict (rust-lang/rustfmt#3568).
So I removed this lint, and I think what it does should be done by extending the clippy lint `unnecessary_self_imports`.
r? petrochenkov0 file changed
0 commit comments