Skip to content

Commit

Permalink
checker: fix orm cast check (#12018)
Browse files Browse the repository at this point in the history
  • Loading branch information
LouisSchmieder committed Sep 29, 2021
1 parent d374c34 commit f9ceb12
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 0 deletions.
4 changes: 4 additions & 0 deletions vlib/v/checker/checker.v
Expand Up @@ -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{}
Expand Down
7 changes: 7 additions & 0 deletions vlib/v/checker/tests/orm_not_a_struct.out
@@ -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 changes: 12 additions & 0 deletions vlib/v/checker/tests/orm_not_a_struct.vv
@@ -0,0 +1,12 @@
import sqlite

enum Person {
test
}

fn main() {
db := sqlite.connect(':memory:')?
_ := sql db {
select from Person
}
}

0 comments on commit f9ceb12

Please sign in to comment.