1
Fork 0

Rollup merge of #125270 - pietroalbini:pa-no-sad-contributors, r=Nilstrieb

Followup fixes from #123344

``@Nilstrieb`` doesn't deserve [to be sad](https://github.com/rust-lang/rust/pull/123344#issuecomment-2100978863), so this PR addresses the two pieces of feedback from that PR.

r? ``@Nilstrieb``
This commit is contained in:
Michael Goulet 2024-05-19 11:04:09 -04:00 committed by GitHub
commit b65fcda4d5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 13 additions and 6 deletions

View file

@ -2733,6 +2733,13 @@ pub enum UseTreeKind {
/// `use prefix` or `use prefix as rename` /// `use prefix` or `use prefix as rename`
Simple(Option<Ident>), Simple(Option<Ident>),
/// `use prefix::{...}` /// `use prefix::{...}`
///
/// The span represents the braces of the nested group and all elements within:
///
/// ```text
/// use foo::{bar, baz};
/// ^^^^^^^^^^
/// ```
Nested { items: ThinVec<(UseTree, NodeId)>, span: Span }, Nested { items: ThinVec<(UseTree, NodeId)>, span: Span },
/// `use prefix::*` /// `use prefix::*`
Glob, Glob,

View file

@ -299,13 +299,13 @@ fn calc_unused_spans(
let mut unused_spans = Vec::new(); let mut unused_spans = Vec::new();
let mut to_remove = Vec::new(); let mut to_remove = Vec::new();
let mut used_childs = 0; let mut used_children = 0;
let mut contains_self = false; let mut contains_self = false;
let mut previous_unused = false; let mut previous_unused = false;
for (pos, (use_tree, use_tree_id)) in nested.iter().enumerate() { for (pos, (use_tree, use_tree_id)) in nested.iter().enumerate() {
let remove = match calc_unused_spans(unused_import, use_tree, *use_tree_id) { let remove = match calc_unused_spans(unused_import, use_tree, *use_tree_id) {
UnusedSpanResult::Used => { UnusedSpanResult::Used => {
used_childs += 1; used_children += 1;
None None
} }
UnusedSpanResult::Unused { mut spans, remove } => { UnusedSpanResult::Unused { mut spans, remove } => {
@ -313,7 +313,7 @@ fn calc_unused_spans(
Some(remove) Some(remove)
} }
UnusedSpanResult::PartialUnused { mut spans, remove: mut to_remove_extra } => { UnusedSpanResult::PartialUnused { mut spans, remove: mut to_remove_extra } => {
used_childs += 1; used_children += 1;
unused_spans.append(&mut spans); unused_spans.append(&mut spans);
to_remove.append(&mut to_remove_extra); to_remove.append(&mut to_remove_extra);
None None
@ -322,7 +322,7 @@ fn calc_unused_spans(
if let Some(remove) = remove { if let Some(remove) = remove {
let remove_span = if nested.len() == 1 { let remove_span = if nested.len() == 1 {
remove remove
} else if pos == nested.len() - 1 || used_childs > 0 { } else if pos == nested.len() - 1 || used_children > 0 {
// Delete everything from the end of the last import, to delete the // Delete everything from the end of the last import, to delete the
// previous comma // previous comma
nested[pos - 1].0.span.shrink_to_hi().to(use_tree.span) nested[pos - 1].0.span.shrink_to_hi().to(use_tree.span)
@ -346,7 +346,7 @@ fn calc_unused_spans(
} }
if unused_spans.is_empty() { if unused_spans.is_empty() {
UnusedSpanResult::Used UnusedSpanResult::Used
} else if used_childs == 0 { } else if used_children == 0 {
UnusedSpanResult::Unused { spans: unused_spans, remove: full_span } UnusedSpanResult::Unused { spans: unused_spans, remove: full_span }
} else { } else {
// If there is only one remaining child that is used, the braces around the use // If there is only one remaining child that is used, the braces around the use
@ -360,7 +360,7 @@ fn calc_unused_spans(
// `self`: `use foo::{self};` is valid Rust syntax, while `use foo::self;` errors // `self`: `use foo::{self};` is valid Rust syntax, while `use foo::self;` errors
// out. We also cannot turn `use foo::{self}` into `use foo`, as the former doesn't // out. We also cannot turn `use foo::{self}` into `use foo`, as the former doesn't
// import types with the same name as the module. // import types with the same name as the module.
if used_childs == 1 && !contains_self { if used_children == 1 && !contains_self {
// Left brace, from the start of the nested group to the first item. // Left brace, from the start of the nested group to the first item.
to_remove.push( to_remove.push(
tree_span.shrink_to_lo().to(nested.first().unwrap().0.span.shrink_to_lo()), tree_span.shrink_to_lo().to(nested.first().unwrap().0.span.shrink_to_lo()),