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('updated_columns', t.array_node_string(node.updated_columns))
|
||||||
obj.add_terse('update_exprs', t.array_node_expr(node.update_exprs))
|
obj.add_terse('update_exprs', t.array_node_expr(node.update_exprs))
|
||||||
obj.add('pos', t.pos(node.pos))
|
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()
|
sub_struct_map := new_object()
|
||||||
for key, val in node.sub_structs {
|
for key, val in node.sub_structs {
|
||||||
|
|
|
@ -2082,6 +2082,8 @@ pub mut:
|
||||||
sub_structs map[int]SqlStmtLine
|
sub_structs map[int]SqlStmtLine
|
||||||
where_expr Expr
|
where_expr Expr
|
||||||
update_exprs []Expr // for `update`
|
update_exprs []Expr // for `update`
|
||||||
|
pre_comments []Comment
|
||||||
|
end_comments []Comment
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct SqlExpr {
|
pub struct SqlExpr {
|
||||||
|
|
|
@ -1612,7 +1612,9 @@ pub fn (mut f Fmt) sql_stmt(node ast.SqlStmt) {
|
||||||
f.writeln(' {')
|
f.writeln(' {')
|
||||||
|
|
||||||
for line in node.lines {
|
for line in node.lines {
|
||||||
|
f.comments(line.pre_comments, level: .indent)
|
||||||
f.sql_stmt_line(line)
|
f.sql_stmt_line(line)
|
||||||
|
f.comments(line.end_comments, level: .indent)
|
||||||
}
|
}
|
||||||
f.write('}')
|
f.write('}')
|
||||||
f.or_expr(node.or_expr)
|
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 {
|
fn (mut p Parser) parse_sql_stmt_line() ast.SqlStmtLine {
|
||||||
|
pre_comments := p.eat_comments()
|
||||||
mut n := p.check_name() // insert
|
mut n := p.check_name() // insert
|
||||||
pos := p.tok.pos()
|
pos := p.tok.pos()
|
||||||
mut kind := ast.SqlStmtKind.insert
|
mut kind := ast.SqlStmtKind.insert
|
||||||
|
@ -215,6 +216,7 @@ fn (mut p Parser) parse_sql_stmt_line() ast.SqlStmtLine {
|
||||||
}
|
}
|
||||||
typ := p.parse_type()
|
typ := p.parse_type()
|
||||||
typ_pos := p.tok.pos()
|
typ_pos := p.tok.pos()
|
||||||
|
end_comments := p.eat_comments()
|
||||||
return ast.SqlStmtLine{
|
return ast.SqlStmtLine{
|
||||||
kind: kind
|
kind: kind
|
||||||
pos: pos.extend(p.prev_tok.pos())
|
pos: pos.extend(p.prev_tok.pos())
|
||||||
|
@ -224,6 +226,8 @@ fn (mut p Parser) parse_sql_stmt_line() ast.SqlStmtLine {
|
||||||
}
|
}
|
||||||
scope: p.scope
|
scope: p.scope
|
||||||
is_generated: false
|
is_generated: false
|
||||||
|
pre_comments: pre_comments
|
||||||
|
end_comments: end_comments
|
||||||
}
|
}
|
||||||
} else if n == 'drop' {
|
} else if n == 'drop' {
|
||||||
kind = .drop
|
kind = .drop
|
||||||
|
@ -234,6 +238,7 @@ fn (mut p Parser) parse_sql_stmt_line() ast.SqlStmtLine {
|
||||||
}
|
}
|
||||||
typ := p.parse_type()
|
typ := p.parse_type()
|
||||||
typ_pos := p.tok.pos()
|
typ_pos := p.tok.pos()
|
||||||
|
end_comments := p.eat_comments()
|
||||||
return ast.SqlStmtLine{
|
return ast.SqlStmtLine{
|
||||||
kind: kind
|
kind: kind
|
||||||
pos: pos.extend(p.prev_tok.pos())
|
pos: pos.extend(p.prev_tok.pos())
|
||||||
|
@ -243,6 +248,8 @@ fn (mut p Parser) parse_sql_stmt_line() ast.SqlStmtLine {
|
||||||
}
|
}
|
||||||
is_generated: false
|
is_generated: false
|
||||||
scope: p.scope
|
scope: p.scope
|
||||||
|
pre_comments: pre_comments
|
||||||
|
end_comments: end_comments
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mut inserted_var := ''
|
mut inserted_var := ''
|
||||||
|
@ -313,6 +320,7 @@ fn (mut p Parser) parse_sql_stmt_line() ast.SqlStmtLine {
|
||||||
return ast.SqlStmtLine{}
|
return ast.SqlStmtLine{}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
end_comments := p.eat_comments()
|
||||||
return ast.SqlStmtLine{
|
return ast.SqlStmtLine{
|
||||||
table_expr: ast.TypeNode{
|
table_expr: ast.TypeNode{
|
||||||
typ: table_type
|
typ: table_type
|
||||||
|
@ -326,6 +334,8 @@ fn (mut p Parser) parse_sql_stmt_line() ast.SqlStmtLine {
|
||||||
where_expr: where_expr
|
where_expr: where_expr
|
||||||
is_generated: false
|
is_generated: false
|
||||||
scope: p.scope
|
scope: p.scope
|
||||||
|
pre_comments: pre_comments
|
||||||
|
end_comments: end_comments
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue