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) | ||||
| 	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{} | ||||
|  |  | |||
|  | @ -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