mirror of
https://github.com/vlang/v.git
synced 2025-09-13 22:42:26 +03:00
This commit is contained in:
parent
9579c1f68b
commit
cf03ecd0de
5 changed files with 38 additions and 0 deletions
|
@ -1824,6 +1824,8 @@ fn (t Tree) sql_stmt_line(node ast.SqlStmtLine) &Node {
|
|||
obj.add_terse('updated_columns', t.array_node_string(node.updated_columns))
|
||||
obj.add_terse('update_exprs', t.array_node_expr(node.update_exprs))
|
||||
obj.add('pos', t.pos(node.pos))
|
||||
obj.add('pre_comments', t.array_node_comment(node.pre_comments))
|
||||
obj.add('end_comments', t.array_node_comment(node.end_comments))
|
||||
|
||||
sub_struct_map := new_object()
|
||||
for key, val in node.sub_structs {
|
||||
|
|
|
@ -2082,6 +2082,8 @@ pub mut:
|
|||
sub_structs map[int]SqlStmtLine
|
||||
where_expr Expr
|
||||
update_exprs []Expr // for `update`
|
||||
pre_comments []Comment
|
||||
end_comments []Comment
|
||||
}
|
||||
|
||||
pub struct SqlExpr {
|
||||
|
|
|
@ -1612,7 +1612,9 @@ pub fn (mut f Fmt) sql_stmt(node ast.SqlStmt) {
|
|||
f.writeln(' {')
|
||||
|
||||
for line in node.lines {
|
||||
f.comments(line.pre_comments, level: .indent)
|
||||
f.sql_stmt_line(line)
|
||||
f.comments(line.end_comments, level: .indent)
|
||||
}
|
||||
f.write('}')
|
||||
f.or_expr(node.or_expr)
|
||||
|
|
22
vlib/v/fmt/tests/sqlstmt_comments_keep.vv
Normal file
22
vlib/v/fmt/tests/sqlstmt_comments_keep.vv
Normal file
|
@ -0,0 +1,22 @@
|
|||
import db.sqlite
|
||||
|
||||
fn main() {
|
||||
dblite := sqlite.connect(':memory:')!
|
||||
sql dblite {
|
||||
// some comment
|
||||
insert address into Address
|
||||
// some comment2
|
||||
}!
|
||||
|
||||
sql dblite {
|
||||
// some comment
|
||||
drop table Address
|
||||
// some comment2
|
||||
}!
|
||||
|
||||
sql dblite {
|
||||
// some comment
|
||||
create table Address
|
||||
// some comment2
|
||||
}!
|
||||
}
|
|
@ -199,6 +199,7 @@ fn (mut p Parser) parse_sql_or_block() ast.OrExpr {
|
|||
}
|
||||
|
||||
fn (mut p Parser) parse_sql_stmt_line() ast.SqlStmtLine {
|
||||
pre_comments := p.eat_comments()
|
||||
mut n := p.check_name() // insert
|
||||
pos := p.tok.pos()
|
||||
mut kind := ast.SqlStmtKind.insert
|
||||
|
@ -215,6 +216,7 @@ fn (mut p Parser) parse_sql_stmt_line() ast.SqlStmtLine {
|
|||
}
|
||||
typ := p.parse_type()
|
||||
typ_pos := p.tok.pos()
|
||||
end_comments := p.eat_comments()
|
||||
return ast.SqlStmtLine{
|
||||
kind: kind
|
||||
pos: pos.extend(p.prev_tok.pos())
|
||||
|
@ -224,6 +226,8 @@ fn (mut p Parser) parse_sql_stmt_line() ast.SqlStmtLine {
|
|||
}
|
||||
scope: p.scope
|
||||
is_generated: false
|
||||
pre_comments: pre_comments
|
||||
end_comments: end_comments
|
||||
}
|
||||
} else if n == 'drop' {
|
||||
kind = .drop
|
||||
|
@ -234,6 +238,7 @@ fn (mut p Parser) parse_sql_stmt_line() ast.SqlStmtLine {
|
|||
}
|
||||
typ := p.parse_type()
|
||||
typ_pos := p.tok.pos()
|
||||
end_comments := p.eat_comments()
|
||||
return ast.SqlStmtLine{
|
||||
kind: kind
|
||||
pos: pos.extend(p.prev_tok.pos())
|
||||
|
@ -243,6 +248,8 @@ fn (mut p Parser) parse_sql_stmt_line() ast.SqlStmtLine {
|
|||
}
|
||||
is_generated: false
|
||||
scope: p.scope
|
||||
pre_comments: pre_comments
|
||||
end_comments: end_comments
|
||||
}
|
||||
}
|
||||
mut inserted_var := ''
|
||||
|
@ -313,6 +320,7 @@ fn (mut p Parser) parse_sql_stmt_line() ast.SqlStmtLine {
|
|||
return ast.SqlStmtLine{}
|
||||
}
|
||||
}
|
||||
end_comments := p.eat_comments()
|
||||
return ast.SqlStmtLine{
|
||||
table_expr: ast.TypeNode{
|
||||
typ: table_type
|
||||
|
@ -326,6 +334,8 @@ fn (mut p Parser) parse_sql_stmt_line() ast.SqlStmtLine {
|
|||
where_expr: where_expr
|
||||
is_generated: false
|
||||
scope: p.scope
|
||||
pre_comments: pre_comments
|
||||
end_comments: end_comments
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue