checker: fix orm cast check (#12018)
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)
|
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.ensure_type_exists(node.table_expr.typ, node.pos) or { return ast.void_type }
|
||||||
c.cur_orm_ts = *sym
|
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
|
info := sym.info as ast.Struct
|
||||||
fields := c.fetch_and_verify_orm_fields(info, node.table_expr.pos, sym.name)
|
fields := c.fetch_and_verify_orm_fields(info, node.table_expr.pos, sym.name)
|
||||||
mut sub_structs := map[int]ast.SqlExpr{}
|
mut sub_structs := map[int]ast.SqlExpr{}
|
||||||
|
|
|
@ -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 | }
|
|
@ -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