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