Skip to content

Commit f344bbd

Browse files
committed
fixup! Simplify advance_to_first_block_item
1 parent 3cb8b0a commit f344bbd

File tree

2 files changed

+14
-16
lines changed

2 files changed

+14
-16
lines changed

src/formatting/items.rs

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -868,20 +868,16 @@ pub(crate) fn format_impl(
868868
.first()
869869
.map(|a| a.span.lo())
870870
.or_else(|| items.first().map(|i| i.span().lo()));
871-
let opening_nls = visitor.advance_to_first_block_item(first_non_ws);
871+
if let Some(opening_nls) = visitor.advance_to_first_block_item(first_non_ws) {
872+
result.push_str(&opening_nls);
873+
}
872874

873875
visitor.visit_attrs(&item.attrs, ast::AttrStyle::Inner);
874876
visitor.visit_impl_items(items);
875877

876878
visitor.format_missing(item.span.hi() - BytePos(1));
877879

878-
let inner_indent_str = if let Some(opening_nls) = opening_nls {
879-
result.push_str(&opening_nls);
880-
visitor.block_indent.to_string(context.config)
881-
} else {
882-
visitor.block_indent.to_string_with_newline(context.config)
883-
};
884-
880+
let inner_indent_str = visitor.block_indent.to_string_with_newline(context.config);
885881
let outer_indent_str = offset.block_only().to_string_with_newline(context.config);
886882

887883
result.push_str(&inner_indent_str);
@@ -1235,21 +1231,19 @@ pub(crate) fn format_trait(
12351231
visitor.block_indent = offset.block_only().block_indent(context.config);
12361232
visitor.last_pos = block_span.lo() + BytePos(open_pos as u32);
12371233

1238-
let opening_nls =
1239-
visitor.advance_to_first_block_item(trait_items.first().map(|i| i.span().lo()));
1234+
if let Some(opening_nls) =
1235+
visitor.advance_to_first_block_item(trait_items.first().map(|i| i.span().lo()))
1236+
{
1237+
result.push_str(&opening_nls);
1238+
}
12401239

12411240
for item in trait_items {
12421241
visitor.visit_trait_item(item);
12431242
}
12441243

12451244
visitor.format_missing(item.span.hi() - BytePos(1));
12461245

1247-
let inner_indent_str = if let Some(opening_nls) = opening_nls {
1248-
result.push_str(&opening_nls);
1249-
visitor.block_indent.to_string(context.config)
1250-
} else {
1251-
visitor.block_indent.to_string_with_newline(context.config)
1252-
};
1246+
let inner_indent_str = visitor.block_indent.to_string_with_newline(context.config);
12531247

12541248
result.push_str(&inner_indent_str);
12551249
result.push_str(visitor.buffer.trim());

src/formatting/visitor.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,7 @@ impl<'b, 'a: 'b> FmtVisitor<'a> {
230230
if snippet.find('\n') != snippet.rfind('\n') {
231231
let mut lines = snippet.lines().map(&str::trim);
232232
lines.next(); // Eat block-opening newline
233+
lines.next_back(); // Eat newline before the first item
233234
let mut result = String::new();
234235
while let Some("") = lines.next() {
235236
result.push('\n');
@@ -1001,6 +1002,9 @@ impl<'b, 'a: 'b> FmtVisitor<'a> {
10011002
.or_else(|| m.items.first().map(|s| s.span().lo()));
10021003
if let Some(opening_nls) = self.advance_to_first_block_item(first_non_ws) {
10031004
self.push_str(&opening_nls);
1005+
if attrs.is_empty() {
1006+
self.push_str("\n");
1007+
}
10041008
}
10051009

10061010
self.visit_attrs(attrs, ast::AttrStyle::Inner);

0 commit comments

Comments
 (0)