mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
ast, parser, fmt: fix formatting of consts with embedded comments (#14008)
This commit is contained in:
parent
25d8faabf6
commit
5551cb248c
@ -323,9 +323,10 @@ pub:
|
|||||||
is_markused bool // an explict `[markused]` tag; the const will NOT be removed by `-skip-unused`, no matter what
|
is_markused bool // an explict `[markused]` tag; the const will NOT be removed by `-skip-unused`, no matter what
|
||||||
pos token.Pos
|
pos token.Pos
|
||||||
pub mut:
|
pub mut:
|
||||||
expr Expr // the value expr of field; everything after `=`
|
expr Expr // the value expr of field; everything after `=`
|
||||||
typ Type // the type of the const field, it can be any type in V
|
typ Type // the type of the const field, it can be any type in V
|
||||||
comments []Comment // comments before current const field
|
comments []Comment // comments before current const field
|
||||||
|
end_comments []Comment // comments that after const field
|
||||||
// the comptime_expr_value field is filled by the checker, when it has enough
|
// the comptime_expr_value field is filled by the checker, when it has enough
|
||||||
// info to evaluate the constant at compile time
|
// info to evaluate the constant at compile time
|
||||||
comptime_expr_value ComptTimeConstValue = empty_comptime_const_expr()
|
comptime_expr_value ComptTimeConstValue = empty_comptime_const_expr()
|
||||||
|
@ -843,7 +843,8 @@ pub fn (mut f Fmt) const_decl(node ast.ConstDecl) {
|
|||||||
f.write(strings.repeat(` `, align_infos[align_idx].max - field.name.len))
|
f.write(strings.repeat(` `, align_infos[align_idx].max - field.name.len))
|
||||||
f.write('= ')
|
f.write('= ')
|
||||||
f.expr(field.expr)
|
f.expr(field.expr)
|
||||||
if node.is_block {
|
f.comments(field.end_comments, inline: true)
|
||||||
|
if node.is_block && field.end_comments.len == 0 {
|
||||||
f.writeln('')
|
f.writeln('')
|
||||||
} else {
|
} else {
|
||||||
// Write out single line comments after const expr if present
|
// Write out single line comments after const expr if present
|
||||||
|
@ -0,0 +1,7 @@
|
|||||||
|
import gx
|
||||||
|
|
||||||
|
const (
|
||||||
|
color = gx.rgb(50, 90, 110) // gx.rgb(167,236,82)
|
||||||
|
)
|
||||||
|
|
||||||
|
fn main() {}
|
8
vlib/v/fmt/tests/consts_with_embeded_comments_input.vv
Normal file
8
vlib/v/fmt/tests/consts_with_embeded_comments_input.vv
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
import gx
|
||||||
|
|
||||||
|
const (
|
||||||
|
color = //gx.rgb(167,236,82)
|
||||||
|
gx.rgb(50, 90, 110)
|
||||||
|
)
|
||||||
|
|
||||||
|
fn main() {}
|
@ -3247,6 +3247,7 @@ fn (mut p Parser) const_decl() ast.ConstDecl {
|
|||||||
}
|
}
|
||||||
mut fields := []ast.ConstField{}
|
mut fields := []ast.ConstField{}
|
||||||
mut comments := []ast.Comment{}
|
mut comments := []ast.Comment{}
|
||||||
|
mut end_comments := []ast.Comment{}
|
||||||
for {
|
for {
|
||||||
comments = p.eat_comments()
|
comments = p.eat_comments()
|
||||||
if is_block && p.tok.kind == .eof {
|
if is_block && p.tok.kind == .eof {
|
||||||
@ -3258,12 +3259,14 @@ fn (mut p Parser) const_decl() ast.ConstDecl {
|
|||||||
}
|
}
|
||||||
pos := p.tok.pos()
|
pos := p.tok.pos()
|
||||||
name := p.check_name()
|
name := p.check_name()
|
||||||
|
end_comments << p.eat_comments()
|
||||||
if util.contains_capital(name) {
|
if util.contains_capital(name) {
|
||||||
p.warn_with_pos('const names cannot contain uppercase letters, use snake_case instead',
|
p.warn_with_pos('const names cannot contain uppercase letters, use snake_case instead',
|
||||||
pos)
|
pos)
|
||||||
}
|
}
|
||||||
full_name := p.prepend_mod(name)
|
full_name := p.prepend_mod(name)
|
||||||
p.check(.assign)
|
p.check(.assign)
|
||||||
|
end_comments << p.eat_comments()
|
||||||
if p.tok.kind == .key_fn {
|
if p.tok.kind == .key_fn {
|
||||||
p.error('const initializer fn literal is not a constant')
|
p.error('const initializer fn literal is not a constant')
|
||||||
return ast.ConstDecl{}
|
return ast.ConstDecl{}
|
||||||
@ -3280,6 +3283,7 @@ fn (mut p Parser) const_decl() ast.ConstDecl {
|
|||||||
expr: expr
|
expr: expr
|
||||||
pos: pos.extend(expr.pos())
|
pos: pos.extend(expr.pos())
|
||||||
comments: comments
|
comments: comments
|
||||||
|
end_comments: end_comments
|
||||||
is_markused: is_markused
|
is_markused: is_markused
|
||||||
}
|
}
|
||||||
fields << field
|
fields << field
|
||||||
|
Loading…
Reference in New Issue
Block a user