Skip to content

Commit

Permalink
fmt: fix enum fields with one empty line
Browse files Browse the repository at this point in the history
  • Loading branch information
yuyi98 committed Aug 8, 2024
1 parent 74e40c5 commit 220f2ac
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 1 deletion.
25 changes: 24 additions & 1 deletion vlib/v/fmt/fmt.v
Original file line number Diff line number Diff line change
Expand Up @@ -1068,7 +1068,30 @@ pub fn (mut f Fmt) enum_decl(node ast.EnumDecl) {
mut value_align_i := 0
mut attr_align_i := 0
mut comment_align_i := 0
for field in node.fields {
for i, field in node.fields {
if i > 0 {
// keep one empty line between fields
last_field := node.fields[i - 1]
before_last_line := if last_field.comments.len > 0
&& last_field.pos.line_nr < last_field.comments.last().pos.last_line {
last_field.comments.last().pos.last_line
} else if last_field.has_expr {
last_field.expr.pos().last_line
} else {
last_field.pos.line_nr
}

next_first_line := if field.comments.len > 0
&& field.pos.line_nr > field.comments[0].pos.line_nr {
field.comments[0].pos.line_nr
} else {
field.pos.line_nr
}

if next_first_line - before_last_line > 1 {
f.writeln('')
}
}
f.write('\t${field.name}')
if field.has_expr {
if value_aligns[value_align_i].line_nr < field.pos.line_nr {
Expand Down
8 changes: 8 additions & 0 deletions vlib/v/fmt/tests/enum_fields_with_empty_line_keep.vv
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
enum Info {
aa = 1 // aa
bbb // bbb

cccc = 5 // cccc
}

fn main() {}

0 comments on commit 220f2ac

Please sign in to comment.