Rollup merge of #123344 - pietroalbini:pa-unused-imports, r=Nilstrieb
Remove braces when fixing a nested use tree into a single item [Back in 2019](https://github.com/rust-lang/rust/pull/56645) I added rustfix support for the `unused_imports` lint, to automatically remove them when running `cargo fix`. For the most part this worked great, but when removing all but one childs of a nested use tree it turned `use foo::{Unused, Used}` into `use foo::{Used}`. This is slightly annoying, because it then requires you to run `rustfmt` to get `use foo::Used`. This PR automatically removes braces and the surrouding whitespace when all but one child of a nested use tree are unused. To get it done I had to add the span of the nested use tree to the AST, and refactor a bit the code I wrote back then. A thing I noticed is, there doesn't seem to be any `//@ run-rustfix` test for fixing the `unused_imports` lint. I created a test in `tests/suggestions` (is that the right directory?) that for now tests just what I added in the PR. I can followup in a separate PR to add more tests for fixing `unused_lints`. This PR is best reviewed commit-by-commit.
This commit is contained in:
commit
d30af5e168
20 changed files with 194 additions and 60 deletions
|
@ -715,7 +715,7 @@ impl<'a> State<'a> {
|
|||
}
|
||||
self.word("*");
|
||||
}
|
||||
ast::UseTreeKind::Nested(items) => {
|
||||
ast::UseTreeKind::Nested { items, .. } => {
|
||||
if !tree.prefix.segments.is_empty() {
|
||||
self.print_path(&tree.prefix, false, 0);
|
||||
self.word("::");
|
||||
|
@ -734,7 +734,7 @@ impl<'a> State<'a> {
|
|||
self.print_use_tree(&use_tree.0);
|
||||
if !is_last {
|
||||
self.word(",");
|
||||
if let ast::UseTreeKind::Nested(_) = use_tree.0.kind {
|
||||
if let ast::UseTreeKind::Nested { .. } = use_tree.0.kind {
|
||||
self.hardbreak();
|
||||
} else {
|
||||
self.space();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue