fmt: save newlines between array elements

pull/4494/head
Alexander Medvednikov 2020-04-18 23:09:23 +02:00
parent 4fe4709b56
commit a18201faa7
1 changed files with 15 additions and 0 deletions

View File

@ -469,7 +469,15 @@ fn (var f Fmt) expr(node ast.Expr) {
// `[1,2,3]` // `[1,2,3]`
// type_sym := f.table.get_type_symbol(it.typ) // type_sym := f.table.get_type_symbol(it.typ)
f.write('[') f.write('[')
var inc_indent := false
var line_nr := node.position().line_nr // to have the same newlines between array elements
for i, expr in it.exprs { for i, expr in it.exprs {
pos := expr.position()
if i == 0 && line_nr < pos.line_nr {
f.writeln('')
f.indent++
inc_indent = true
}
if i > 0 && it.exprs.len > 1 { if i > 0 && it.exprs.len > 1 {
f.wrap_long_line() f.wrap_long_line()
} }
@ -477,6 +485,13 @@ fn (var f Fmt) expr(node ast.Expr) {
if i < it.exprs.len - 1 { if i < it.exprs.len - 1 {
f.write(', ') f.write(', ')
} }
if line_nr < pos.line_nr {
f.writeln('')
}
line_nr = pos.line_nr
}
if inc_indent {
f.indent--
} }
f.write(']') f.write(']')
} }