v2: fix if guard var type & handle blank ident in assign
parent
a118c72423
commit
b65fad9ca8
|
@ -153,6 +153,14 @@ pub fn (c mut Checker) infix_expr(infix_expr ast.InfixExpr) table.Type {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (c mut Checker) check_assign_expr(assign_expr ast.AssignExpr) {
|
fn (c mut Checker) check_assign_expr(assign_expr ast.AssignExpr) {
|
||||||
|
match assign_expr.left {
|
||||||
|
ast.Ident {
|
||||||
|
if it.kind == .blank_ident {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {}
|
||||||
|
}
|
||||||
left_type := c.expr(assign_expr.left)
|
left_type := c.expr(assign_expr.left)
|
||||||
c.expected_type = left_type
|
c.expected_type = left_type
|
||||||
// t := c.table.get_type_symbol(left_type)
|
// t := c.table.get_type_symbol(left_type)
|
||||||
|
|
|
@ -1161,12 +1161,11 @@ fn (p mut Parser) if_expr() ast.Expr {
|
||||||
is_or = true
|
is_or = true
|
||||||
p.open_scope()
|
p.open_scope()
|
||||||
var_name := p.check_name()
|
var_name := p.check_name()
|
||||||
// p.table.register_var(
|
|
||||||
p.check(.decl_assign)
|
p.check(.decl_assign)
|
||||||
expr,typ := p.expr(0)
|
expr,typ := p.expr(0)
|
||||||
p.scope.register_var(ast.VarDecl{
|
p.scope.register_var(ast.VarDecl{
|
||||||
name: var_name
|
name: var_name
|
||||||
typ: typ
|
expr: expr
|
||||||
})
|
})
|
||||||
cond = ast.IfGuardExpr{
|
cond = ast.IfGuardExpr{
|
||||||
var_name: var_name
|
var_name: var_name
|
||||||
|
|
Loading…
Reference in New Issue