Skip to content

Commit

Permalink
Rollup merge of rust-lang#123344 - pietroalbini:pa-unused-imports, r=…
Browse files Browse the repository at this point in the history
…Nilstrieb

Remove braces when fixing a nested use tree into a single item

[Back in 2019](rust-lang#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.
  • Loading branch information
matthiaskrgr authored May 8, 2024
2 parents 27d320d + afa482e commit 2c70167
Showing 1 changed file with 3 additions and 1 deletion.
4 changes: 3 additions & 1 deletion src/imports.rs
Original file line number Diff line number Diff line change
Expand Up @@ -458,7 +458,9 @@ impl UseTree {
version,
});
}
UseTreeKind::Nested(ref list) => {
UseTreeKind::Nested {
items: ref list, ..
} => {
// Extract comments between nested use items.
// This needs to be done before sorting use items.
let items = itemize_list(
Expand Down

0 comments on commit 2c70167

Please sign in to comment.