diff --git a/compiler/gen_c.v b/compiler/gen_c.v index 44bff72f8a..c7698a143c 100644 --- a/compiler/gen_c.v +++ b/compiler/gen_c.v @@ -235,6 +235,11 @@ fn (p mut Parser) gen_for_str_header(i, tmp, var_typ, val string) { p.genln('$var_typ $val = (($var_typ *) bytes_$tmp . data)[$i];') } +fn (p mut Parser) gen_for_range_header(i, range_end, tmp, var_type, val string) { + p.genln(';\nfor (int $i = $tmp; $i < $range_end; $i++) {') + p.genln('$var_type $val = $i;') +} + fn (p mut Parser) gen_for_map_header(i, tmp, var_typ, val, typ string) { def := type_default(typ) p.genln('array_string keys_$tmp = map_keys(& $tmp ); ') diff --git a/compiler/gen_js.v b/compiler/gen_js.v index 57542dc19d..6adc29ab88 100644 --- a/compiler/gen_js.v +++ b/compiler/gen_js.v @@ -34,7 +34,6 @@ fn (p mut Parser) gen_fn_decl(f Fn, typ, _str_args string) { } fn types_to_c(types []Type, table &Table) string { - println('js typ to code ') mut sb := strings.new_builder(10) for t in types { if t.cat != .union_ && t.cat != .struct_ { @@ -96,6 +95,11 @@ fn (p mut Parser) gen_for_header(i, tmp, var_typ, val string) { p.genln('var $val = $tmp [$i];') } +fn (p mut Parser) gen_for_range_header(i, range_end, tmp, var_type, val string) { + p.genln(';\nfor (var $i = $tmp; $i < $range_end; $i++) {') + p.genln('var /*$var_type*/ $val = $i;') +} + fn (p mut Parser) gen_for_str_header(i, tmp, var_typ, val string) { p.genln('for (var $i = 0; $i < $tmp .length; $i ++) {') p.genln('var $val = $tmp[$i];') diff --git a/compiler/parser.v b/compiler/parser.v index 6838eacadb..772fd210c1 100644 --- a/compiler/parser.v +++ b/compiler/parser.v @@ -2983,7 +2983,6 @@ fn (p mut Parser) for_st() { next_tok := p.peek() //debug := p.scanner.file_path.contains('r_draw') p.open_scope() - i_type := if p.is_js { 'var' } else { 'int' } if p.tok == .lcbr { // Infinite loop p.gen('while (1) {') @@ -3147,9 +3146,8 @@ fn (p mut Parser) for_st() { else if is_str { p.gen_for_str_header(i, tmp, var_type, val) } - else if is_range && !p.is_js { - p.genln(';\nfor ($i_type $i = $tmp; $i < $range_end; $i++) {') - p.genln('$var_type $val = $i;') + else if is_range { + p.gen_for_range_header(i, range_end, tmp, var_type, val) } } else { // `for a < b {`