Skip to content

Commit 3341c17

Browse files
authored
fmt: keep one empty line in struct decl (#8782)
1 parent 55b69a7 commit 3341c17

File tree

3 files changed

+28
-0
lines changed

3 files changed

+28
-0
lines changed

vlib/v/fmt/fmt.v

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -696,6 +696,24 @@ pub fn (mut f Fmt) struct_decl(node ast.StructDecl) {
696696
f.writeln('__global:')
697697
} else if i == node.module_pos {
698698
f.writeln('module:')
699+
} else if i > 0 {
700+
// keep one empty line between fields (exclude one after mut:, pub:, ...)
701+
mut before_last_line := node.fields[i - 1].pos.line_nr
702+
if node.fields[i - 1].comments.len > 0 {
703+
before_last_line = util.imax(before_last_line, node.fields[i - 1].comments.last().pos.last_line)
704+
}
705+
if node.fields[i - 1].has_default_expr {
706+
before_last_line = util.imax(before_last_line, node.fields[i - 1].default_expr.position().last_line)
707+
}
708+
709+
mut next_first_line := field.pos.line_nr
710+
if field.comments.len > 0 {
711+
next_first_line = util.imin(next_first_line, field.comments[0].pos.line_nr)
712+
}
713+
println('$field.name $next_first_line $before_last_line')
714+
if next_first_line - before_last_line > 1 {
715+
f.writeln('')
716+
}
699717
}
700718
end_pos := field.pos.pos + field.pos.len
701719
before_comments := field.comments.filter(it.pos.pos < field.pos.pos)

vlib/v/fmt/tests/structs_expected.vv

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ mut:
5151
somefield2 /* 11 */ int // 12
5252
pub:
5353
somefield3 int
54+
55+
somefield4 int
5456
/*
5557
13
5658
14

vlib/v/fmt/tests/structs_input.vv

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,15 @@ somefield /*4*/ /*5*/ int /*6*/ /*7*/ /*8*/ /*
4747
*/
4848
somefield2 /*11*/ int // 12
4949
pub:
50+
51+
52+
53+
5054
somefield3 int
55+
56+
57+
58+
somefield4 int
5159
/*
5260
13
5361
14

0 commit comments

Comments
 (0)