orm: fix mark as used var on insert statement (fix #23032) (#23038)

This commit is contained in:
Felipe Pena 2024-12-03 18:07:42 -03:00 committed by GitHub
parent 1eb3867f4e
commit 31ce668c7a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 27 additions and 0 deletions

View File

@ -0,0 +1,7 @@
vlib/v/checker/tests/orm_unused_var.vv:15:2: warning: unused variable: `x_id`
13 |
14 | x := Test{}
15 | x_id := sql db {
| ~~~~
16 | insert x into Test
17 | } or { panic(err) }

View File

@ -0,0 +1,18 @@
import db.sqlite
struct Test {
id int @[primary; serial]
}
fn main() {
db := sqlite.connect(':memory:')!
sql db {
create table Test
}!
x := Test{}
x_id := sql db {
insert x into Test
} or { panic(err) }
}

View File

@ -20,6 +20,7 @@ const skip_on_ubuntu_musl = [
'vlib/v/checker/tests/vweb_tmpl_used_var.vv',
'vlib/v/checker/tests/vweb_routing_checks.vv',
'vlib/v/checker/tests/orm_op_with_option_and_none.vv',
'vlib/v/checker/tests/orm_unused_var.vv',
'vlib/v/tests/skip_unused/gg_code.vv',
]

View File

@ -30,6 +30,7 @@ fn (mut p Parser) sql_expr() ast.Expr {
mut is_count := false
if is_insert {
inserted_var = p.check_name()
p.scope.mark_var_as_used(inserted_var)
into := p.check_name()
if into != 'into' {
p.error('expecting `into`')