cgen: fix `for (int i = 0; i < 10; i++, a++) {` (multiple expressions in the inc part)

Delyan Angelov 2022-06-04 19:51:00 +03:00 committed by Chewing_Bever
parent 726d0acfb6
commit cf7ae39e62
Signed by: Jef Roosens
GPG Key ID: B75D4F293C7052DB
2 changed files with 21 additions and 1 deletions

View File

@ -70,7 +70,21 @@ fn (mut g Gen) for_c_stmt(node ast.ForCStmt) {
}
g.write('; ')
if node.has_inc {
g.stmt(node.inc)
mut processed := false
if node.inc is ast.ExprStmt {
if node.inc.expr is ast.ConcatExpr {
for inc_expr_idx, inc_expr in node.inc.expr.vals {
g.expr(inc_expr)
if inc_expr_idx < node.inc.expr.vals.len - 1 {
g.write(', ')
}
}
processed = true
}
}
if !processed {
g.stmt(node.inc)
}
}
g.writeln(') {')
g.is_vlines_enabled = true

View File

@ -0,0 +1,6 @@
fn test_2_expressions_in_same_for_increment_part() {
mut a := 0
for i := 0; i < 10; i++, a++ {
assert a == i
}
}