Skip to content

Commit 25a60ad

Browse files
fix: Respect grouping of dotted tables (#105)
1 parent a605966 commit 25a60ad

File tree

3 files changed

+28
-2
lines changed

3 files changed

+28
-2
lines changed

regressions/104.toml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
[package]
2+
name = "cargo-sort-test"
3+
version = "0.1.0"
4+
edition = "2021"
5+
6+
[dependencies]
7+
doesnotexistb.workspace = true
8+
9+
doesnotexista.workspace = true

regressions/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Input and expected output files for regression tests.

src/sort.rs

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -273,8 +273,17 @@ fn sort_by_group(table: &mut Table) {
273273
for (idx, (k, _)) in table_clone.iter().enumerate() {
274274
let (k, v) = table_clone.get_key_value(k).unwrap();
275275

276-
let blank_lines = k
277-
.leaf_decor()
276+
// If the item is a dotted table, grab the decor of the first item of the table
277+
// instead.
278+
let decor = if let Some(first_in_dotted) =
279+
v.as_table().filter(|t| t.is_dotted()).and_then(|t| t.key(t.iter().next()?.0))
280+
{
281+
first_in_dotted.leaf_decor()
282+
} else {
283+
k.leaf_decor()
284+
};
285+
286+
let blank_lines = decor
278287
.prefix()
279288
.and_then(RawString::as_str)
280289
.unwrap_or("")
@@ -553,6 +562,13 @@ mod test {
553562
assert_eq(input, sorted);
554563
}
555564

565+
#[test]
566+
fn issue_104() {
567+
let input = fs::read_to_string("regressions/104.toml").unwrap();
568+
let sorted = super::sort_toml(&input, MATCHER, true, &[]);
569+
assert_eq(input, sorted);
570+
}
571+
556572
#[test]
557573
fn reorder() {
558574
let input = fs::read_to_string("examp/clippy.toml").unwrap();

0 commit comments

Comments
 (0)