mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
fmt: fix unexpected comment
, expecting struct key for trailing arg syntax (#7658)
This commit is contained in:
parent
fe7fa7077e
commit
2360762a42
@ -250,8 +250,8 @@ pub struct StructInit {
|
||||
pub:
|
||||
pos token.Position
|
||||
is_short bool
|
||||
pre_comments []Comment
|
||||
pub mut:
|
||||
pre_comments []Comment
|
||||
typ table.Type
|
||||
fields []StructInitField
|
||||
embeds []StructInitEmbed
|
||||
|
@ -1932,14 +1932,18 @@ pub fn (mut f Fmt) struct_init(it ast.StructInit) {
|
||||
} else {
|
||||
use_short_args := f.use_short_fn_args
|
||||
f.use_short_fn_args = false
|
||||
mut multiline_short_args := false
|
||||
mut multiline_short_args := it.pre_comments.len > 0
|
||||
if !use_short_args {
|
||||
f.writeln('$name{')
|
||||
} else {
|
||||
if multiline_short_args {
|
||||
f.writeln('')
|
||||
}
|
||||
}
|
||||
init_start := f.out.len
|
||||
f.comments(it.pre_comments, inline: true, has_nl: true, level: .indent)
|
||||
f.indent++
|
||||
short_args_loop: for {
|
||||
f.comments(it.pre_comments, inline: true, has_nl: true, level: .keep)
|
||||
for i, field in it.fields {
|
||||
f.write('$field.name: ')
|
||||
f.prefix_expr_cast_expr(field.expr)
|
||||
|
@ -20,6 +20,15 @@ fn main() {
|
||||
x: 0
|
||||
}
|
||||
)
|
||||
ui.row(
|
||||
// stretch: true
|
||||
margin: {
|
||||
top: 10
|
||||
left: 10
|
||||
right: 10
|
||||
bottom: 10
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
fn bar_func(bar Bar) {
|
||||
|
@ -14,6 +14,10 @@ fn main() {
|
||||
bar_func(x: 'some string', b: Baz{
|
||||
x: 0
|
||||
})
|
||||
ui.row({
|
||||
//stretch: true
|
||||
margin: {top:10,left:10,right:10,bottom:10}
|
||||
})
|
||||
}
|
||||
|
||||
fn bar_func(bar Bar) {
|
||||
|
@ -18,8 +18,10 @@ fn main() {
|
||||
})
|
||||
bar_func(x: 'bar', y: 2, z: 3, a: 4)
|
||||
func_from_other_file(val: 'something')
|
||||
// pre comment
|
||||
bar_func(x: 'struct has a pre comment')
|
||||
bar_func(
|
||||
// pre comment
|
||||
x: 'struct has a pre comment'
|
||||
)
|
||||
bar_func(
|
||||
x: 'first field'
|
||||
// comment between fields
|
||||
|
@ -125,7 +125,11 @@ pub fn (mut p Parser) call_args() []ast.CallArg {
|
||||
}
|
||||
mut comments := p.eat_comments()
|
||||
arg_start_pos := p.tok.position()
|
||||
e := p.expr(0)
|
||||
mut e := p.expr(0)
|
||||
if mut e is ast.StructInit {
|
||||
e.pre_comments << comments
|
||||
comments = []ast.Comment{}
|
||||
}
|
||||
pos := arg_start_pos.extend(p.prev_tok.position())
|
||||
comments << p.eat_comments()
|
||||
args << ast.CallArg{
|
||||
|
@ -197,7 +197,7 @@ pub fn (mut p Parser) expr(precedence int) ast.Expr {
|
||||
// it should be a struct
|
||||
if p.peek_tok.kind == .pipe {
|
||||
node = p.assoc()
|
||||
} else if p.peek_tok.kind == .colon || p.tok.kind == .rcbr {
|
||||
} else if p.peek_tok.kind == .colon || p.tok.kind in [.rcbr, .comment] {
|
||||
node = p.struct_init(true) // short_syntax: true
|
||||
} else if p.tok.kind == .name {
|
||||
p.next()
|
||||
|
Loading…
Reference in New Issue
Block a user