From 8de6511056643b4398a9d85408aa3f81c812d3ba Mon Sep 17 00:00:00 2001 From: StunxFS <56417208+StunxFS@users.noreply.github.com> Date: Thu, 11 Mar 2021 09:01:53 -0400 Subject: [PATCH] cgen: minor optimization to `for ch in "StringLiteral"` (#9240) --- vlib/v/gen/c/cgen.v | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/vlib/v/gen/c/cgen.v b/vlib/v/gen/c/cgen.v index 433d53f304..0dcd5b0230 100644 --- a/vlib/v/gen/c/cgen.v +++ b/vlib/v/gen/c/cgen.v @@ -1509,13 +1509,18 @@ fn (mut g Gen) for_in_stmt(node ast.ForInStmt) { } } } else if node.kind == .string { + cond := if node.cond is ast.StringLiteral || node.cond is ast.StringInterLiteral { + ast.Expr(g.new_ctemp_var_then_gen(node.cond, table.string_type)) + } else { + node.cond + } i := if node.key_var in ['', '_'] { g.new_tmp_var() } else { node.key_var } g.write('for (int $i = 0; $i < ') - g.expr(node.cond) + g.expr(cond) g.writeln('.len; ++$i) {') if node.val_var != '_' { g.write('\tbyte ${c_name(node.val_var)} = ') - g.expr(node.cond) + g.expr(cond) g.writeln('.str[$i];') } } else if node.kind == .struct_ {