diff --git a/src/rules/attr_set.rs b/src/rules/attr_set.rs index e08190c..98e7ca4 100644 --- a/src/rules/attr_set.rs +++ b/src/rules/attr_set.rs @@ -74,20 +74,28 @@ pub fn rule( } let mut item_index: usize = 0; + let mut inline_next_comment = false; loop { // /**/ children.drain_comments_and_newlines(|element| match element { crate::children::DrainCommentOrNewline::Comment(text) => { - steps.push_back(crate::builder::Step::NewLine); - steps.push_back(crate::builder::Step::Pad); + if inline_next_comment && text.starts_with("#") { + steps.push_back(crate::builder::Step::Whitespace); + } else { + steps.push_back(crate::builder::Step::NewLine); + steps.push_back(crate::builder::Step::Pad); + } steps.push_back(crate::builder::Step::Comment(text)); item_index += 1; + inline_next_comment = false; } crate::children::DrainCommentOrNewline::Newline(newlines) => { if newlines > 1 && item_index > 0 && item_index < items_count { steps.push_back(crate::builder::Step::NewLine); } + + inline_next_comment = newlines == 0; } }); @@ -115,6 +123,7 @@ pub fn rule( } children.move_next(); + inline_next_comment = true; } } diff --git a/tests/cases/comment/in b/tests/cases/comment/in index bf90396..67e6d92 100644 --- a/tests/cases/comment/in +++ b/tests/cases/comment/in @@ -59,6 +59,19 @@ a = 123; # comment } + { # 1 + #2 + a=1; # 3 + b=1; + c=1; # 4 + #5 + + #6 + + d=1; + #7 + } + ({ a, # comment b ? 2,# comment diff --git a/tests/cases/comment/out b/tests/cases/comment/out index b9e063e..f95ba75 100644 --- a/tests/cases/comment/out +++ b/tests/cases/comment/out @@ -64,8 +64,21 @@ ] { - a = 123; - # comment + a = 123; # comment + } + + { + # 1 + #2 + a = 1; # 3 + b = 1; + c = 1; # 4 + #5 + + #6 + + d = 1; + #7 } (