Skip to content

Commit f0f3194

Browse files
committed
fixup! Configuration option to preserve blank lines at start of block
1 parent a726941 commit f0f3194

File tree

2 files changed

+14
-13
lines changed

2 files changed

+14
-13
lines changed

src/formatting/items.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -342,7 +342,7 @@ impl<'a> FmtVisitor<'a> {
342342
self.push_str(&indent_str);
343343
} else {
344344
let first_non_ws = item.body.first().map(|s| s.span().lo());
345-
let opening_nls = &self.trim_spaces_after_opening_brace(first_non_ws);
345+
let opening_nls = &self.advance_to_first_block_item(first_non_ws);
346346
self.push_str(&opening_nls);
347347

348348
for item in &item.body {
@@ -866,11 +866,11 @@ pub(crate) fn format_impl(
866866
visitor.block_indent = item_indent;
867867
visitor.last_pos = lo + BytePos(open_pos as u32);
868868

869-
let open_nls = &visitor.trim_spaces_after_opening_brace(
869+
let open_nls = &visitor.advance_to_first_block_item(
870870
inner_attributes(&item.attrs)
871871
.first()
872872
.map(|a| a.span.lo())
873-
.or(items.first().map(|i| i.span().lo())),
873+
.or_else(|| items.first().map(|i| i.span().lo())),
874874
);
875875

876876
visitor.visit_attrs(&item.attrs, ast::AttrStyle::Inner);
@@ -1234,8 +1234,8 @@ pub(crate) fn format_trait(
12341234
visitor.block_indent = offset.block_only().block_indent(context.config);
12351235
visitor.last_pos = block_span.lo() + BytePos(open_pos as u32);
12361236

1237-
let open_nls = &visitor
1238-
.trim_spaces_after_opening_brace(trait_items.first().map(|i| i.span().lo()));
1237+
let open_nls =
1238+
&visitor.advance_to_first_block_item(trait_items.first().map(|i| i.span().lo()));
12391239

12401240
for item in trait_items {
12411241
visitor.visit_trait_item(item);

src/formatting/visitor.rs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -180,11 +180,12 @@ impl<'b, 'a: 'b> FmtVisitor<'a> {
180180
}
181181
}
182182

183-
/// Remove spaces between the opening brace and the first statement or the inner attribute
184-
/// of the block, fast-forwarding this position of the visitor.
183+
/// Advances the position of the visitor to the first statement or the inner attribute of a
184+
/// block.
185+
///
185186
/// If `preserve_block_start_blank_lines` is true, the return value contains the newlines that
186187
/// should be preserved.
187-
pub(crate) fn trim_spaces_after_opening_brace(
188+
pub(crate) fn advance_to_first_block_item(
188189
&mut self,
189190
first_item_pos: Option<BytePos>,
190191
) -> String {
@@ -266,9 +267,9 @@ impl<'b, 'a: 'b> FmtVisitor<'a> {
266267
self.push_str("{");
267268

268269
let first_non_ws = inner_attrs
269-
.and_then(|attrs| inner_attributes(attrs).first().map(|attr| attr.span.lo()))
270-
.or(b.stmts.first().map(|s| s.span().lo()));
271-
let opening_nls = &self.trim_spaces_after_opening_brace(first_non_ws);
270+
.and_then(|attrs| attrs.first().map(|attr| attr.span.lo()))
271+
.or_else(|| b.stmts.first().map(|s| s.span().lo()));
272+
let opening_nls = &self.advance_to_first_block_item(first_non_ws);
272273
self.push_str(&opening_nls);
273274

274275
// Format inner attributes if available.
@@ -993,8 +994,8 @@ impl<'b, 'a: 'b> FmtVisitor<'a> {
993994
let first_non_ws = inner_attributes(attrs)
994995
.first()
995996
.map(|attr| attr.span.lo())
996-
.or(m.items.first().map(|s| s.span().lo()));
997-
let opening_nls = &self.trim_spaces_after_opening_brace(first_non_ws);
997+
.or_else(|| m.items.first().map(|s| s.span().lo()));
998+
let opening_nls = &self.advance_to_first_block_item(first_non_ws);
998999
self.push_str(&opening_nls);
9991000

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

0 commit comments

Comments
 (0)