checker: only check ForInStmt.high once
parent
95696559b7
commit
cdd4a7c880
|
@ -1833,7 +1833,8 @@ fn (mut c Checker) stmt(node ast.Stmt) {
|
|||
typ := c.expr(node.cond)
|
||||
typ_idx := typ.idx()
|
||||
if node.is_range {
|
||||
high_type_idx := c.expr(node.high).idx()
|
||||
high_type := c.expr(node.high)
|
||||
high_type_idx := high_type.idx()
|
||||
if typ_idx in table.integer_type_idxs && high_type_idx !in table.integer_type_idxs {
|
||||
c.error('range types do not match', node.cond.position())
|
||||
} else if typ_idx in table.float_type_idxs || high_type_idx in table.float_type_idxs {
|
||||
|
@ -1843,7 +1844,6 @@ fn (mut c Checker) stmt(node ast.Stmt) {
|
|||
} else if typ_idx == table.string_type_idx || high_type_idx == table.string_type_idx {
|
||||
c.error('range type can not be string', node.cond.position())
|
||||
}
|
||||
c.expr(node.high)
|
||||
} else {
|
||||
mut scope := c.file.scope.innermost(node.pos.pos)
|
||||
sym := c.table.get_type_symbol(typ)
|
||||
|
|
Loading…
Reference in New Issue