fmt: keep single line if in struct init (#8734)
parent
e534b4397d
commit
d3bcd5d305
|
@ -58,11 +58,7 @@ pub fn new_builder(pref &pref.Preferences) Builder {
|
|||
parent: 0
|
||||
}
|
||||
compiled_dir: compiled_dir
|
||||
max_nr_errors: if pref.error_limit > 0 {
|
||||
pref.error_limit
|
||||
} else {
|
||||
100
|
||||
}
|
||||
max_nr_errors: if pref.error_limit > 0 { pref.error_limit } else { 100 }
|
||||
cached_msvc: msvc
|
||||
}
|
||||
// max_nr_errors: pref.error_limit ?? 100 TODO potential syntax?
|
||||
|
|
|
@ -36,6 +36,7 @@ pub mut:
|
|||
file ast.File
|
||||
did_imports bool
|
||||
is_assign bool
|
||||
is_struct_init bool
|
||||
auto_imports []string // automatically inserted imports that the user forgot to specify
|
||||
import_pos int // position of the imports in the resulting string for later autoimports insertion
|
||||
used_imports []string // to remove unused imports
|
||||
|
@ -1636,7 +1637,7 @@ pub fn (mut f Fmt) if_expr(node ast.IfExpr) {
|
|||
dollar := if node.is_comptime { '$' } else { '' }
|
||||
mut single_line := node.branches.len == 2 && node.has_else
|
||||
&& branch_is_single_line(node.branches[0]) && branch_is_single_line(node.branches[1])
|
||||
&& (node.is_expr || f.is_assign || f.single_line_fields)
|
||||
&& (node.is_expr || f.is_assign || f.is_struct_init || f.single_line_fields)
|
||||
f.single_line_if = single_line
|
||||
if_start := f.line_len
|
||||
for {
|
||||
|
@ -2067,6 +2068,12 @@ pub fn (mut f Fmt) map_init(it ast.MapInit) {
|
|||
}
|
||||
|
||||
pub fn (mut f Fmt) struct_init(it ast.StructInit) {
|
||||
struct_init_save := f.is_struct_init
|
||||
f.is_struct_init = true
|
||||
defer {
|
||||
f.is_struct_init = struct_init_save
|
||||
}
|
||||
|
||||
type_sym := f.table.get_type_symbol(it.typ)
|
||||
// f.write('<old name: $type_sym.name>')
|
||||
mut name := type_sym.name
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
struct Foo {
|
||||
n int
|
||||
s string
|
||||
}
|
||||
|
||||
fn valid_single_line() {
|
||||
// Variable initialization
|
||||
a, b := if true { 'a', 'b' } else { 'b', 'a' }
|
||||
|
@ -10,6 +15,11 @@ fn valid_single_line() {
|
|||
_ := if false { Foo{} } else { Foo{5, 6} }
|
||||
// As argument for a function call
|
||||
some_func(if cond { 'param1' } else { 'param2' })
|
||||
// struct init
|
||||
foo := Foo{
|
||||
n: if true { 1 } else { 0 }
|
||||
s: if false { 'false' } else { 'true' }
|
||||
}
|
||||
}
|
||||
|
||||
fn requires_multiple_lines() {
|
||||
|
|
Loading…
Reference in New Issue