mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
checker: fix orm cast check (#12018)
This commit is contained in:
parent
d374c347e5
commit
f9ceb12e22
@ -7930,6 +7930,10 @@ fn (mut c Checker) sql_expr(mut node ast.SqlExpr) ast.Type {
|
||||
sym := c.table.get_type_symbol(node.table_expr.typ)
|
||||
c.ensure_type_exists(node.table_expr.typ, node.pos) or { return ast.void_type }
|
||||
c.cur_orm_ts = *sym
|
||||
if sym.info !is ast.Struct {
|
||||
c.error('The table symbol `$sym.name` has to be a struct', node.table_expr.pos)
|
||||
return ast.void_type
|
||||
}
|
||||
info := sym.info as ast.Struct
|
||||
fields := c.fetch_and_verify_orm_fields(info, node.table_expr.pos, sym.name)
|
||||
mut sub_structs := map[int]ast.SqlExpr{}
|
||||
|
7
vlib/v/checker/tests/orm_not_a_struct.out
Normal file
7
vlib/v/checker/tests/orm_not_a_struct.out
Normal file
@ -0,0 +1,7 @@
|
||||
vlib/v/checker/tests/orm_not_a_struct.vv:10:15: error: The table symbol `Person` has to be a struct
|
||||
8 | db := sqlite.connect(':memory:')?
|
||||
9 | _ := sql db {
|
||||
10 | select from Person
|
||||
| ~~~~~~
|
||||
11 | }
|
||||
12 | }
|
12
vlib/v/checker/tests/orm_not_a_struct.vv
Normal file
12
vlib/v/checker/tests/orm_not_a_struct.vv
Normal file
@ -0,0 +1,12 @@
|
||||
import sqlite
|
||||
|
||||
enum Person {
|
||||
test
|
||||
}
|
||||
|
||||
fn main() {
|
||||
db := sqlite.connect(':memory:')?
|
||||
_ := sql db {
|
||||
select from Person
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user