From d60233b618cafff36a7035d0bd831fbf1b3b3554 Mon Sep 17 00:00:00 2001 From: Enzo Baldisserri Date: Thu, 14 May 2020 22:22:32 +0200 Subject: [PATCH] cgen: simplify for in range --- vlib/v/gen/cgen.v | 21 +++++++++------------ vlib/v/tests/for_loops_test.v | 8 ++++++++ 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/vlib/v/gen/cgen.v b/vlib/v/gen/cgen.v index 757eb8d446..a422475262 100644 --- a/vlib/v/gen/cgen.v +++ b/vlib/v/gen/cgen.v @@ -715,15 +715,12 @@ fn (mut g Gen) write_defer_stmts() { fn (mut g Gen) for_in(it ast.ForInStmt) { if it.is_range { // `for x in 1..10 {` - i := g.new_tmp_var() + i := if it.val_var == '_' { g.new_tmp_var() } else { c_name(it.val_var) } g.write('for (int $i = ') g.expr(it.cond) g.write('; $i < ') g.expr(it.high) g.writeln('; $i++) {') - if it.val_var != '_' { - g.writeln('\tint ${c_name(it.val_var)} = $i;') - } g.stmts(it.stmts) g.writeln('}') } else if it.kind == .array { @@ -1303,14 +1300,14 @@ fn (mut g Gen) expr(node ast.Expr) { mut styp := it.type_name if it.type_name == '' { styp = g.typ(it.typ) - } else { - sym := g.table.get_type_symbol(it.typ) - if sym.kind == .struct_ { - info := sym.info as table.Struct - if !info.is_typedef { - styp = 'struct ' + styp - } - } + } else { + sym := g.table.get_type_symbol(it.typ) + if sym.kind == .struct_ { + info := sym.info as table.Struct + if !info.is_typedef { + styp = 'struct ' + styp + } + } } /* if styp.starts_with('C__') { diff --git a/vlib/v/tests/for_loops_test.v b/vlib/v/tests/for_loops_test.v index 6cb6a90659..4ce5efdef0 100644 --- a/vlib/v/tests/for_loops_test.v +++ b/vlib/v/tests/for_loops_test.v @@ -18,6 +18,14 @@ fn test_for_char_in_range() { assert sum == 6 } +fn test_for_blank_in_range() { + mut sum := 0 + for _ in 1 .. 3 { + sum++ + } + assert sum == 2 +} + fn test_for_char_complex() { mut sum := 0 for char := 0; char < nums.len; char++ {