checker, cgen: fix array index optional with if expr (#14575)
parent
846ddfd728
commit
fefb9643b2
|
@ -3403,6 +3403,9 @@ pub fn (mut c Checker) index_expr(mut node ast.IndexExpr) ast.Type {
|
|||
typ = value_type
|
||||
}
|
||||
}
|
||||
if node.or_expr.stmts.len > 0 && node.or_expr.stmts.last() is ast.ExprStmt {
|
||||
c.expected_or_type = typ
|
||||
}
|
||||
c.stmts_ending_with_expression(node.or_expr.stmts)
|
||||
c.check_expr_opt_call(node, typ)
|
||||
return typ
|
||||
|
|
|
@ -85,7 +85,7 @@ fn (mut g Gen) if_expr(node ast.IfExpr) {
|
|||
g.stmts(branch.stmts)
|
||||
g.expected_cast_type = prev_expected_cast_type
|
||||
}
|
||||
if node.branches.len == 1 {
|
||||
if node.branches.len == 1 && !node.is_expr {
|
||||
g.write(': 0')
|
||||
}
|
||||
g.write(')')
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
fn test_array_index_optional_with_if_expr() {
|
||||
ret := []string{}[0] or {
|
||||
if true { 'a' } else { 'b' }
|
||||
}
|
||||
println(ret)
|
||||
assert ret == 'a'
|
||||
}
|
Loading…
Reference in New Issue