Skip to content

Commit 1070378

Browse files
authored
jsgen: fix array initialization with "index" and "it" (fix #24397) (#24429)
1 parent be85287 commit 1070378

2 files changed

Lines changed: 13 additions & 2 deletions

File tree

‎vlib/v/gen/js/js.v‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2052,8 +2052,8 @@ fn (mut g JsGen) gen_array_init_expr(it ast.ArrayInit) {
20522052
g.writeln('(function(length) {')
20532053
g.inc_indent()
20542054
g.writeln('const ${t1} = [];')
2055-
g.write('for (let it = 0; it < length')
2056-
g.writeln('; it++) {')
2055+
g.write('for (let it = 0, index = 0; index < length')
2056+
g.writeln('; it++, index++) {')
20572057
g.inc_indent()
20582058
g.write('${t1}.push(')
20592059
if it.has_init {

‎vlib/v/gen/js/tests/array.v‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,17 @@ fn vararg_test() {
2020
fn main() {
2121
vararg_test()
2222

23+
// index initializations
24+
list1 := []string{len: 3, init: 'Item ${index}'}
25+
list2 := []string{len: 3, init: 'Item ${it}'}
26+
list3 := []int{len: 3, init: index}
27+
list4 := []string{len: 4, init: '${index}:${it * 2}'}
28+
println(list1)
29+
println(list2)
30+
println(list1 == list2)
31+
println(list3)
32+
println(list4)
33+
2334
arr1 := ['Hello', 'JS', 'Backend']
2435
mut arr2 := [1, 2, 3, 4, 5]
2536

0 commit comments

Comments
 (0)