Fix issues with formatting imports with comments

This commit is contained in:
Robert Sammelson 2023-07-21 00:02:15 -04:00 committed by Yacin Tmimi
parent f89cd3c1f3
commit 1340fc412a
3 changed files with 205 additions and 2 deletions

View File

@ -589,7 +589,7 @@ pub(crate) fn normalize(mut self) -> UseTree {
// Normalise foo::{bar} -> foo::bar
if let UseSegmentKind::List(ref list) = last.kind {
if list.len() == 1 && list[0].to_string() != "self" {
if list.len() == 1 && list[0].to_string() != "self" && !list[0].has_comment() {
normalize_sole_list = true;
}
}
@ -1032,7 +1032,9 @@ fn rewrite_nested_use_tree(
let list_str = write_list(&list_items, &fmt)?;
let result = if (list_str.contains('\n') || list_str.len() > remaining_width)
let result = if (list_str.contains('\n')
|| list_str.len() > remaining_width
|| tactic == DefinitiveListTactic::Vertical)
&& context.config.imports_indent() == IndentStyle::Block
{
format!(

104
tests/source/issue-5852.rs Normal file
View File

@ -0,0 +1,104 @@
use std::{
fs,
// (temporarily commented, we'll need this again in a second) io,
};
use foo::{
self // this is important
};
use foo :: bar
;
use foo::{bar};
use foo::{
bar
// abc
};
use foo::{
bar,
// abc
};
use foo::{
// 345
bar
};
use foo::{
self
// abc
};
use foo::{
self,
// abc
};
use foo::{
// 345
self
};
use foo::{
self // a
,
};
use foo::{ self /* a */ };
use foo::{ self /* a */, };
use foo::{
// abc
abc::{
xyz
// 123
}
};
use foo::{
// abc
bar,
abc
};
use foo::{
bar,
// abc
abc
};
use foo::{
bar,
abc
// abc
};
use foo::{
bar,
abc,
// abc
};
use foo::{
self,
// abc
abc::{
xyz
// 123
}
};
use foo::{
self,
// abc
abc::{
// 123
xyz
}
};
use path::{self /*comment*/,};

View File

@ -0,0 +1,97 @@
use std::{
fs,
// (temporarily commented, we'll need this again in a second) io,
};
use foo::{
self, // this is important
};
use foo::bar;
use foo::bar;
use foo::{
bar, // abc
};
use foo::{
bar,
// abc
};
use foo::{
// 345
bar,
};
use foo::{
self, // abc
};
use foo::{
self,
// abc
};
use foo::{
// 345
self,
};
use foo::{
self, // a
};
use foo::{self /* a */};
use foo::{self /* a */};
use foo::{
// abc
abc::{
xyz, // 123
},
};
use foo::{
abc,
// abc
bar,
};
use foo::{
// abc
abc,
bar,
};
use foo::{
abc, // abc
bar,
};
use foo::{
abc,
// abc
bar,
};
use foo::{
self,
// abc
abc::{
xyz, // 123
},
};
use foo::{
self,
// abc
abc::{
// 123
xyz,
},
};
use path::{self /*comment*/};