diff --git a/src/compiler/code_generator.ts b/src/compiler/code_generator.ts index 0220afb0..8b20c62b 100644 --- a/src/compiler/code_generator.ts +++ b/src/compiler/code_generator.ts @@ -894,18 +894,18 @@ export class CodeGenerator { } this.addLine(`for (let ${loopVar} = 0; ${loopVar} < ${l}; ${loopVar}++) {`); this.target.indentLevel++; - this.addLine(`ctx[\`${ast.elem}\`] = ${vals}[${loopVar}];`); + this.addLine(`ctx[\`${ast.elem}\`] = ${keys}[${loopVar}];`); if (!ast.hasNoFirst) { this.addLine(`ctx[\`${ast.elem}_first\`] = ${loopVar} === 0;`); } if (!ast.hasNoLast) { - this.addLine(`ctx[\`${ast.elem}_last\`] = ${loopVar} === ${vals}.length - 1;`); + this.addLine(`ctx[\`${ast.elem}_last\`] = ${loopVar} === ${keys}.length - 1;`); } if (!ast.hasNoIndex) { this.addLine(`ctx[\`${ast.elem}_index\`] = ${loopVar};`); } if (!ast.hasNoValue) { - this.addLine(`ctx[\`${ast.elem}_value\`] = ${keys}[${loopVar}];`); + this.addLine(`ctx[\`${ast.elem}_value\`] = ${vals}[${loopVar}];`); } this.define(`key${this.target.loopLevel}`, ast.key ? compileExpr(ast.key) : loopVar); if (this.dev) { diff --git a/src/runtime/template_helpers.ts b/src/runtime/template_helpers.ts index 242dcf2b..72d7ff88 100644 --- a/src/runtime/template_helpers.ts +++ b/src/runtime/template_helpers.ts @@ -75,8 +75,8 @@ function prepareList(collection: unknown): [unknown[], unknown[], number, undefi keys = [...(>collection)]; values = keys; } else { - values = Object.keys(collection); - keys = Object.values(collection); + values = Object.values(collection); + keys = Object.keys(collection); } } else { throw new OwlError(`Invalid loop expression: "${collection}" is not iterable`); diff --git a/tests/__snapshots__/reactivity.test.ts.snap b/tests/__snapshots__/reactivity.test.ts.snap index 9740828b..ed1f942f 100644 --- a/tests/__snapshots__/reactivity.test.ts.snap +++ b/tests/__snapshots__/reactivity.test.ts.snap @@ -353,7 +353,7 @@ exports[`Reactivity: useState useless atoms should be deleted 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(Object.keys(ctx['state']));; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`id\`] = v_block2[i1]; + ctx[\`id\`] = k_block2[i1]; const key1 = ctx['id']; c_block2[i1] = withKey(comp1({id: ctx['id']}, key + \`__1__\${key1}\`, node, this, null), key1); } diff --git a/tests/compiler/__snapshots__/event_handling.test.ts.snap b/tests/compiler/__snapshots__/event_handling.test.ts.snap index e1c13502..a5bffed3 100644 --- a/tests/compiler/__snapshots__/event_handling.test.ts.snap +++ b/tests/compiler/__snapshots__/event_handling.test.ts.snap @@ -72,7 +72,7 @@ exports[`t-on can bind handlers with empty object (with non empty inner string) ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(['someval']);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`action\`] = v_block2[i1]; + ctx[\`action\`] = k_block2[i1]; ctx[\`action_index\`] = i1; const key1 = ctx['action_index']; const v1 = ctx['activate']; @@ -142,7 +142,7 @@ exports[`t-on handler is bound to proper owner, part 2 1`] = ` ctx = Object.create(ctx); const [k_block1, v_block1, l_block1, c_block1] = prepareList([1]);; for (let i1 = 0; i1 < l_block1; i1++) { - ctx[\`value\`] = v_block1[i1]; + ctx[\`value\`] = k_block1[i1]; const key1 = ctx['value']; let hdlr1 = [ctx['add'], ctx]; c_block1[i1] = withKey(block2([hdlr1]), key1); @@ -189,11 +189,11 @@ exports[`t-on handler is bound to proper owner, part 4 1`] = ` ctx = Object.create(ctx); const [k_block1, v_block1, l_block1, c_block1] = prepareList([1]);; for (let i1 = 0; i1 < l_block1; i1++) { - ctx[\`value\`] = v_block1[i1]; + ctx[\`value\`] = k_block1[i1]; ctx[\`value_first\`] = i1 === 0; - ctx[\`value_last\`] = i1 === v_block1.length - 1; + ctx[\`value_last\`] = i1 === k_block1.length - 1; ctx[\`value_index\`] = i1; - ctx[\`value_value\`] = k_block1[i1]; + ctx[\`value_value\`] = v_block1[i1]; const key1 = ctx['value']; c_block1[i1] = withKey(callTemplate_1.call(this, ctx, node, key + \`__1__\${key1}\`), key1); } @@ -348,7 +348,7 @@ exports[`t-on t-on modifiers (native listener) t-on with prevent modifier in t-f ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['projects']);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`project\`] = v_block2[i1]; + ctx[\`project\`] = k_block2[i1]; const key1 = ctx['project']; const v1 = ctx['onEdit']; const v2 = ctx['project']; diff --git a/tests/compiler/__snapshots__/misc.test.ts.snap b/tests/compiler/__snapshots__/misc.test.ts.snap index 2d4aa3bf..b4440b9d 100644 --- a/tests/compiler/__snapshots__/misc.test.ts.snap +++ b/tests/compiler/__snapshots__/misc.test.ts.snap @@ -33,7 +33,7 @@ exports[`misc complex template 1`] = ` ctx = Object.create(ctx); const [k_block4, v_block4, l_block4, c_block4] = prepareList(ctx['batch'].slot_ids.filter(_slot=>_slot.build_id.id&&!_slot.trigger_id.manual&&(ctx['options'].trigger_display[_slot.trigger_id.id])));; for (let i1 = 0; i1 < l_block4; i1++) { - ctx[\`slot\`] = v_block4[i1]; + ctx[\`slot\`] = k_block4[i1]; const key1 = ctx['slot'].id; c_block4[i1] = withKey(comp1({class: ctx['slot_container'],slot: ctx['slot']}, key + \`__1__\${key1}\`, node, this, null), key1); } @@ -42,7 +42,7 @@ exports[`misc complex template 1`] = ` ctx = Object.create(ctx); const [k_block6, v_block6, l_block6, c_block6] = prepareList([1,2,3,4]);; for (let i1 = 0; i1 < l_block6; i1++) { - ctx[\`x\`] = v_block6[i1]; + ctx[\`x\`] = k_block6[i1]; const key1 = ctx['x']; c_block6[i1] = withKey(block7(), key1); } @@ -51,7 +51,7 @@ exports[`misc complex template 1`] = ` ctx = Object.create(ctx); const [k_block8, v_block8, l_block8, c_block8] = prepareList(ctx['commit_links']);; for (let i1 = 0; i1 < l_block8; i1++) { - ctx[\`commit_link\`] = v_block8[i1]; + ctx[\`commit_link\`] = k_block8[i1]; const key1 = ctx['commit_link'].id; let b10,b11,b12,b13; let attr5 = \`/runbot/commit/\${ctx['commit_link'].commit_id}\`; @@ -99,11 +99,11 @@ exports[`misc global 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList([4,5,6]);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`value\`] = v_block2[i1]; + ctx[\`value\`] = k_block2[i1]; ctx[\`value_first\`] = i1 === 0; - ctx[\`value_last\`] = i1 === v_block2.length - 1; + ctx[\`value_last\`] = i1 === k_block2.length - 1; ctx[\`value_index\`] = i1; - ctx[\`value_value\`] = k_block2[i1]; + ctx[\`value_value\`] = v_block2[i1]; const key1 = ctx['value']; let txt1 = ctx['value']; const b4 = block4([txt1]); @@ -223,7 +223,7 @@ exports[`misc other complex template 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['projects']);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`project\`] = v_block2[i1]; + ctx[\`project\`] = k_block2[i1]; const key1 = ctx['project'].id; let hdlr1 = [ctx['selectProject'](ctx['project']), ctx]; let txt2 = ctx['project'].name; @@ -263,7 +263,7 @@ exports[`misc other complex template 1`] = ` ctx = Object.create(ctx); const [k_block15, v_block15, l_block15, c_block15] = prepareList(ctx['categories']);; for (let i1 = 0; i1 < l_block15; i1++) { - ctx[\`category\`] = v_block15[i1]; + ctx[\`category\`] = k_block15[i1]; const key1 = ctx['category'].id; let attr6 = ctx['category'].id; let prop1 = new Boolean(ctx['category'].id==ctx['options'].active_category_id); @@ -284,7 +284,7 @@ exports[`misc other complex template 1`] = ` ctx = Object.create(ctx); const [k_block18, v_block18, l_block18, c_block18] = prepareList(ctx['triggers']);; for (let i1 = 0; i1 < l_block18; i1++) { - ctx[\`trigger\`] = v_block18[i1]; + ctx[\`trigger\`] = k_block18[i1]; const key1 = ctx['trigger'].id; let b20; if (!ctx['trigger'].manual&&ctx['trigger'].project_id===ctx['project'].id&&ctx['trigger'].category_id===ctx['options'].active_category_id) { diff --git a/tests/compiler/__snapshots__/qweb_memory.test.ts.snap b/tests/compiler/__snapshots__/qweb_memory.test.ts.snap index f7ea873c..3c3a6e82 100644 --- a/tests/compiler/__snapshots__/qweb_memory.test.ts.snap +++ b/tests/compiler/__snapshots__/qweb_memory.test.ts.snap @@ -12,7 +12,7 @@ exports[`memory t-foreach does not leak stuff in global scope 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList([3,2,1]);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`item\`] = v_block2[i1]; + ctx[\`item\`] = k_block2[i1]; ctx[\`item_index\`] = i1; const key1 = ctx['item_index']; c_block2[i1] = withKey(text(ctx['item']), key1); diff --git a/tests/compiler/__snapshots__/t_call.test.ts.snap b/tests/compiler/__snapshots__/t_call.test.ts.snap index a586b9cf..2833f8f8 100644 --- a/tests/compiler/__snapshots__/t_call.test.ts.snap +++ b/tests/compiler/__snapshots__/t_call.test.ts.snap @@ -440,11 +440,11 @@ exports[`t-call (template calling) recursive template, part 2 2`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['node'].children||[]);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`subtree\`] = v_block2[i1]; + ctx[\`subtree\`] = k_block2[i1]; ctx[\`subtree_first\`] = i1 === 0; - ctx[\`subtree_last\`] = i1 === v_block2.length - 1; + ctx[\`subtree_last\`] = i1 === k_block2.length - 1; ctx[\`subtree_index\`] = i1; - ctx[\`subtree_value\`] = k_block2[i1]; + ctx[\`subtree_value\`] = v_block2[i1]; const key1 = ctx['subtree_index']; ctx = Object.create(ctx); ctx[isBoundary] = 1; @@ -495,11 +495,11 @@ exports[`t-call (template calling) recursive template, part 3 2`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['node'].children||[]);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`subtree\`] = v_block2[i1]; + ctx[\`subtree\`] = k_block2[i1]; ctx[\`subtree_first\`] = i1 === 0; - ctx[\`subtree_last\`] = i1 === v_block2.length - 1; + ctx[\`subtree_last\`] = i1 === k_block2.length - 1; ctx[\`subtree_index\`] = i1; - ctx[\`subtree_value\`] = k_block2[i1]; + ctx[\`subtree_value\`] = v_block2[i1]; const key1 = ctx['subtree_index']; ctx = Object.create(ctx); ctx[isBoundary] = 1; @@ -553,11 +553,11 @@ exports[`t-call (template calling) recursive template, part 4: with t-set recurs ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['node'].children||[]);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`subtree\`] = v_block2[i1]; + ctx[\`subtree\`] = k_block2[i1]; ctx[\`subtree_first\`] = i1 === 0; - ctx[\`subtree_last\`] = i1 === v_block2.length - 1; + ctx[\`subtree_last\`] = i1 === k_block2.length - 1; ctx[\`subtree_index\`] = i1; - ctx[\`subtree_value\`] = k_block2[i1]; + ctx[\`subtree_value\`] = v_block2[i1]; const key1 = ctx['subtree_index']; ctx = Object.create(ctx); ctx[isBoundary] = 1; @@ -813,11 +813,11 @@ exports[`t-call (template calling) t-call with t-set inside and outside 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['list']);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`v\`] = v_block2[i1]; + ctx[\`v\`] = k_block2[i1]; ctx[\`v_first\`] = i1 === 0; - ctx[\`v_last\`] = i1 === v_block2.length - 1; + ctx[\`v_last\`] = i1 === k_block2.length - 1; ctx[\`v_index\`] = i1; - ctx[\`v_value\`] = k_block2[i1]; + ctx[\`v_value\`] = v_block2[i1]; const key1 = ctx['v_index']; setContextValue(ctx, \\"val\\", ctx['v'].val); ctx = Object.create(ctx); @@ -880,11 +880,11 @@ exports[`t-call (template calling) t-call with t-set inside and outside. 2 2`] = ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['list']);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`v\`] = v_block2[i1]; + ctx[\`v\`] = k_block2[i1]; ctx[\`v_first\`] = i1 === 0; - ctx[\`v_last\`] = i1 === v_block2.length - 1; + ctx[\`v_last\`] = i1 === k_block2.length - 1; ctx[\`v_index\`] = i1; - ctx[\`v_value\`] = k_block2[i1]; + ctx[\`v_value\`] = v_block2[i1]; const key1 = ctx['v_index']; setContextValue(ctx, \\"val\\", ctx['v'].val); ctx = Object.create(ctx); diff --git a/tests/compiler/__snapshots__/t_foreach.test.ts.snap b/tests/compiler/__snapshots__/t_foreach.test.ts.snap index 1dcee101..c144096e 100644 --- a/tests/compiler/__snapshots__/t_foreach.test.ts.snap +++ b/tests/compiler/__snapshots__/t_foreach.test.ts.snap @@ -12,7 +12,7 @@ exports[`t-foreach does not pollute the rendering context 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList([1]);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`item\`] = v_block2[i1]; + ctx[\`item\`] = k_block2[i1]; const key1 = ctx['item']; c_block2[i1] = withKey(text(ctx['item']), key1); } @@ -35,7 +35,7 @@ exports[`t-foreach iterate on items (on a element node) 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList([1,2]);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`item\`] = v_block2[i1]; + ctx[\`item\`] = k_block2[i1]; const key1 = ctx['item']; let txt1 = ctx['item']; c_block2[i1] = withKey(block3([txt1]), key1); @@ -58,9 +58,9 @@ exports[`t-foreach iterate on items 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList([3,2,1]);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`item\`] = v_block2[i1]; + ctx[\`item\`] = k_block2[i1]; ctx[\`item_index\`] = i1; - ctx[\`item_value\`] = k_block2[i1]; + ctx[\`item_value\`] = v_block2[i1]; const key1 = ctx['item']; const b4 = text(\` [\`); const b5 = text(ctx['item_index']); @@ -87,9 +87,9 @@ exports[`t-foreach iterate, Map param 1`] = ` ctx = Object.create(ctx); const [k_block1, v_block1, l_block1, c_block1] = prepareList(ctx['value']);; for (let i1 = 0; i1 < l_block1; i1++) { - ctx[\`item\`] = v_block1[i1]; + ctx[\`item\`] = k_block1[i1]; ctx[\`item_index\`] = i1; - ctx[\`item_value\`] = k_block1[i1]; + ctx[\`item_value\`] = v_block1[i1]; const key1 = ctx['item_index']; const b3 = text(\` [\`); const b4 = text(ctx['item_index']); @@ -115,9 +115,9 @@ exports[`t-foreach iterate, Set param 1`] = ` ctx = Object.create(ctx); const [k_block1, v_block1, l_block1, c_block1] = prepareList(ctx['value']);; for (let i1 = 0; i1 < l_block1; i1++) { - ctx[\`item\`] = v_block1[i1]; + ctx[\`item\`] = k_block1[i1]; ctx[\`item_index\`] = i1; - ctx[\`item_value\`] = k_block1[i1]; + ctx[\`item_value\`] = v_block1[i1]; const key1 = ctx['item_index']; const b3 = text(\` [\`); const b4 = text(ctx['item_index']); @@ -145,9 +145,9 @@ exports[`t-foreach iterate, dict param 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['value']);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`item\`] = v_block2[i1]; + ctx[\`item\`] = k_block2[i1]; ctx[\`item_index\`] = i1; - ctx[\`item_value\`] = k_block2[i1]; + ctx[\`item_value\`] = v_block2[i1]; const key1 = ctx['item_index']; const b4 = text(\` [\`); const b5 = text(ctx['item_index']); @@ -174,9 +174,9 @@ exports[`t-foreach iterate, generator param 1`] = ` ctx = Object.create(ctx); const [k_block1, v_block1, l_block1, c_block1] = prepareList(ctx['gen']());; for (let i1 = 0; i1 < l_block1; i1++) { - ctx[\`item\`] = v_block1[i1]; + ctx[\`item\`] = k_block1[i1]; ctx[\`item_index\`] = i1; - ctx[\`item_value\`] = k_block1[i1]; + ctx[\`item_value\`] = v_block1[i1]; const key1 = ctx['item_index']; const b3 = text(\` [\`); const b4 = text(ctx['item_index']); @@ -202,9 +202,9 @@ exports[`t-foreach iterate, iterable param 1`] = ` ctx = Object.create(ctx); const [k_block1, v_block1, l_block1, c_block1] = prepareList(ctx['map'].values());; for (let i1 = 0; i1 < l_block1; i1++) { - ctx[\`item\`] = v_block1[i1]; + ctx[\`item\`] = k_block1[i1]; ctx[\`item_index\`] = i1; - ctx[\`item_value\`] = k_block1[i1]; + ctx[\`item_value\`] = v_block1[i1]; const key1 = ctx['item_index']; const b3 = text(\` [\`); const b4 = text(ctx['item_index']); @@ -232,9 +232,9 @@ exports[`t-foreach iterate, position 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(Array(5));; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`elem\`] = v_block2[i1]; + ctx[\`elem\`] = k_block2[i1]; ctx[\`elem_first\`] = i1 === 0; - ctx[\`elem_last\`] = i1 === v_block2.length - 1; + ctx[\`elem_last\`] = i1 === k_block2.length - 1; ctx[\`elem_index\`] = i1; const key1 = ctx['elem']; let b4,b5,b6,b7,b8,b9; @@ -268,7 +268,7 @@ exports[`t-foreach simple iteration (in a node) 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList([3,2,1]);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`item\`] = v_block2[i1]; + ctx[\`item\`] = k_block2[i1]; const key1 = ctx['item']; c_block2[i1] = withKey(text(ctx['item']), key1); } @@ -288,7 +288,7 @@ exports[`t-foreach simple iteration 1`] = ` ctx = Object.create(ctx); const [k_block1, v_block1, l_block1, c_block1] = prepareList([3,2,1]);; for (let i1 = 0; i1 < l_block1; i1++) { - ctx[\`item\`] = v_block1[i1]; + ctx[\`item\`] = k_block1[i1]; const key1 = ctx['item']; c_block1[i1] = withKey(text(ctx['item']), key1); } @@ -310,7 +310,7 @@ exports[`t-foreach simple iteration with two nodes inside 1`] = ` ctx = Object.create(ctx); const [k_block1, v_block1, l_block1, c_block1] = prepareList([3,2,1]);; for (let i1 = 0; i1 < l_block1; i1++) { - ctx[\`item\`] = v_block1[i1]; + ctx[\`item\`] = k_block1[i1]; const key1 = ctx['item']; let txt1 = ctx['item']; const b3 = block3([txt1]); @@ -339,20 +339,20 @@ exports[`t-foreach t-call with body in t-foreach in t-foreach 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['numbers']);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`a\`] = v_block2[i1]; + ctx[\`a\`] = k_block2[i1]; ctx[\`a_first\`] = i1 === 0; - ctx[\`a_last\`] = i1 === v_block2.length - 1; + ctx[\`a_last\`] = i1 === k_block2.length - 1; ctx[\`a_index\`] = i1; - ctx[\`a_value\`] = k_block2[i1]; + ctx[\`a_value\`] = v_block2[i1]; const key1 = ctx['a']; ctx = Object.create(ctx); const [k_block4, v_block4, l_block4, c_block4] = prepareList(ctx['letters']);; for (let i2 = 0; i2 < l_block4; i2++) { - ctx[\`b\`] = v_block4[i2]; + ctx[\`b\`] = k_block4[i2]; ctx[\`b_first\`] = i2 === 0; - ctx[\`b_last\`] = i2 === v_block4.length - 1; + ctx[\`b_last\`] = i2 === k_block4.length - 1; ctx[\`b_index\`] = i2; - ctx[\`b_value\`] = k_block4[i2]; + ctx[\`b_value\`] = v_block4[i2]; const key2 = ctx['b']; ctx = Object.create(ctx); ctx[isBoundary] = 1; @@ -408,20 +408,20 @@ exports[`t-foreach t-call without body in t-foreach in t-foreach 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['numbers']);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`a\`] = v_block2[i1]; + ctx[\`a\`] = k_block2[i1]; ctx[\`a_first\`] = i1 === 0; - ctx[\`a_last\`] = i1 === v_block2.length - 1; + ctx[\`a_last\`] = i1 === k_block2.length - 1; ctx[\`a_index\`] = i1; - ctx[\`a_value\`] = k_block2[i1]; + ctx[\`a_value\`] = v_block2[i1]; const key1 = ctx['a']; ctx = Object.create(ctx); const [k_block4, v_block4, l_block4, c_block4] = prepareList(ctx['letters']);; for (let i2 = 0; i2 < l_block4; i2++) { - ctx[\`b\`] = v_block4[i2]; + ctx[\`b\`] = k_block4[i2]; ctx[\`b_first\`] = i2 === 0; - ctx[\`b_last\`] = i2 === v_block4.length - 1; + ctx[\`b_last\`] = i2 === k_block4.length - 1; ctx[\`b_index\`] = i2; - ctx[\`b_value\`] = k_block4[i2]; + ctx[\`b_value\`] = v_block4[i2]; const key2 = ctx['b']; c_block4[i2] = withKey(callTemplate_1.call(this, ctx, node, key + \`__1__\${key1}__\${key2}\`), key2); } @@ -475,12 +475,12 @@ exports[`t-foreach t-foreach in t-foreach 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['numbers']);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`number\`] = v_block2[i1]; + ctx[\`number\`] = k_block2[i1]; const key1 = ctx['number']; ctx = Object.create(ctx); const [k_block3, v_block3, l_block3, c_block3] = prepareList(ctx['letters']);; for (let i2 = 0; i2 < l_block3; i2++) { - ctx[\`letter\`] = v_block3[i2]; + ctx[\`letter\`] = k_block3[i2]; const key2 = ctx['letter']; const b5 = text(\` [\`); const b6 = text(ctx['number']); @@ -509,7 +509,7 @@ exports[`t-foreach t-foreach with t-if inside (no external node) 1`] = ` ctx = Object.create(ctx); const [k_block1, v_block1, l_block1, c_block1] = prepareList(ctx['elems']);; for (let i1 = 0; i1 < l_block1; i1++) { - ctx[\`elem\`] = v_block1[i1]; + ctx[\`elem\`] = k_block1[i1]; const key1 = ctx['elem'].id; let b3; if (ctx['elem'].id<3) { @@ -536,7 +536,7 @@ exports[`t-foreach t-foreach with t-if inside 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['elems']);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`elem\`] = v_block2[i1]; + ctx[\`elem\`] = k_block2[i1]; const key1 = ctx['elem'].id; let b4; if (ctx['elem'].id<3) { @@ -564,7 +564,7 @@ exports[`t-foreach t-key on t-foreach 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['things']);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`thing\`] = v_block2[i1]; + ctx[\`thing\`] = k_block2[i1]; const key1 = ctx['thing']; c_block2[i1] = withKey(block3(), key1); } @@ -587,7 +587,7 @@ exports[`t-foreach throws error if invalid loop expression 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['abc']);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`item\`] = v_block2[i1]; + ctx[\`item\`] = k_block2[i1]; ctx[\`item_index\`] = i1; const key1 = ctx['item']; const tKey_1 = ctx['item_index']; @@ -614,7 +614,7 @@ exports[`t-foreach with t-memo 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['items']);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`item\`] = v_block2[i1]; + ctx[\`item\`] = k_block2[i1]; const key1 = ctx['item'].id; const memo1 = [ctx['item'].x]; const vnode1 = cache[key1];; diff --git a/tests/compiler/__snapshots__/t_key.test.ts.snap b/tests/compiler/__snapshots__/t_key.test.ts.snap index bac2b2f1..1c664842 100644 --- a/tests/compiler/__snapshots__/t_key.test.ts.snap +++ b/tests/compiler/__snapshots__/t_key.test.ts.snap @@ -58,7 +58,7 @@ exports[`t-key t-key directive in a list 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['beers']);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`beer\`] = v_block2[i1]; + ctx[\`beer\`] = k_block2[i1]; const key1 = ctx['beer'].id; let txt1 = ctx['beer'].name; c_block2[i1] = withKey(block3([txt1]), key1); diff --git a/tests/compiler/__snapshots__/t_ref.test.ts.snap b/tests/compiler/__snapshots__/t_ref.test.ts.snap index a9d4d1e0..9cee1aef 100644 --- a/tests/compiler/__snapshots__/t_ref.test.ts.snap +++ b/tests/compiler/__snapshots__/t_ref.test.ts.snap @@ -105,7 +105,7 @@ exports[`t-ref refs in a loop 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['items']);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`item\`] = v_block2[i1]; + ctx[\`item\`] = k_block2[i1]; const key1 = ctx['item']; const tKey_1 = ctx['item']; const v1 = ctx['item']; diff --git a/tests/compiler/__snapshots__/t_set.test.ts.snap b/tests/compiler/__snapshots__/t_set.test.ts.snap index aec7b5b3..ffbdd43f 100644 --- a/tests/compiler/__snapshots__/t_set.test.ts.snap +++ b/tests/compiler/__snapshots__/t_set.test.ts.snap @@ -351,7 +351,7 @@ exports[`t-set t-set outside modified in t-foreach 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(['a','b']);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`val\`] = v_block2[i1]; + ctx[\`val\`] = k_block2[i1]; const key1 = ctx['val']; let txt1 = ctx['iter']; c_block2[i1] = withKey(block3([txt1]), key1); @@ -381,7 +381,7 @@ exports[`t-set t-set outside modified in t-foreach increment-after operator 1`] ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(['a','b']);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`val\`] = v_block2[i1]; + ctx[\`val\`] = k_block2[i1]; const key1 = ctx['val']; let txt1 = ctx['iter']; c_block2[i1] = withKey(block3([txt1]), key1); @@ -411,7 +411,7 @@ exports[`t-set t-set outside modified in t-foreach increment-before operator 1`] ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(['a','b']);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`val\`] = v_block2[i1]; + ctx[\`val\`] = k_block2[i1]; const key1 = ctx['val']; let txt1 = ctx['iter']; c_block2[i1] = withKey(block3([txt1]), key1); @@ -441,7 +441,7 @@ exports[`t-set t-set should reuse variable if possible 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['list']);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`elem\`] = v_block2[i1]; + ctx[\`elem\`] = k_block2[i1]; ctx[\`elem_index\`] = i1; const key1 = ctx['elem_index']; let txt1 = ctx['v']; diff --git a/tests/compiler/t_foreach.test.ts b/tests/compiler/t_foreach.test.ts index 7605b21b..3a17483f 100644 --- a/tests/compiler/t_foreach.test.ts +++ b/tests/compiler/t_foreach.test.ts @@ -110,7 +110,7 @@ describe("t-foreach", () => { [: ] `; - const expected = ` [0: 1 a] [1: 2 b] [2: 3 c] `; + const expected = ` [0: a 1] [1: b 2] [2: c 3] `; const context = { value: new Map([ ["a", 1], diff --git a/tests/components/__snapshots__/basics.test.ts.snap b/tests/components/__snapshots__/basics.test.ts.snap index 0cb03129..ff241b1b 100644 --- a/tests/components/__snapshots__/basics.test.ts.snap +++ b/tests/components/__snapshots__/basics.test.ts.snap @@ -492,7 +492,7 @@ exports[`basics list of two sub components inside other nodes 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['state'].blips);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`blip\`] = v_block2[i1]; + ctx[\`blip\`] = k_block2[i1]; const key1 = ctx['blip'].id; const b4 = comp1({}, key + \`__1__\${key1}\`, node, this, null); const b5 = comp2({}, key + \`__2__\${key1}\`, node, this, null); @@ -1084,7 +1084,7 @@ exports[`basics updating a component with t-foreach as root 1`] = ` ctx = Object.create(ctx); const [k_block1, v_block1, l_block1, c_block1] = prepareList(ctx['items']);; for (let i1 = 0; i1 < l_block1; i1++) { - ctx[\`item\`] = v_block1[i1]; + ctx[\`item\`] = k_block1[i1]; const key1 = ctx['item']; c_block1[i1] = withKey(text(ctx['item']), key1); } @@ -1135,7 +1135,7 @@ exports[`basics widget after a t-foreach 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(Array(2));; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`elem\`] = v_block2[i1]; + ctx[\`elem\`] = k_block2[i1]; ctx[\`elem_index\`] = i1; const key1 = ctx['elem_index']; c_block2[i1] = withKey(text(\`txt\`), key1); @@ -1282,7 +1282,7 @@ exports[`t-out in components can render list of t-out 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['state'].items);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`item\`] = v_block2[i1]; + ctx[\`item\`] = k_block2[i1]; const key1 = ctx['item']; const b4 = text(ctx['item']); const b5 = safeOutput(ctx['item']); diff --git a/tests/components/__snapshots__/concurrency.test.ts.snap b/tests/components/__snapshots__/concurrency.test.ts.snap index a3c86491..74c8141c 100644 --- a/tests/components/__snapshots__/concurrency.test.ts.snap +++ b/tests/components/__snapshots__/concurrency.test.ts.snap @@ -13,7 +13,7 @@ exports[`Cascading renders after microtaskTick 1`] = ` ctx = Object.create(ctx); const [k_block4, v_block4, l_block4, c_block4] = prepareList(ctx['state']);; for (let i1 = 0; i1 < l_block4; i1++) { - ctx[\`elem\`] = v_block4[i1]; + ctx[\`elem\`] = k_block4[i1]; const key1 = ctx['elem'].id; c_block4[i1] = withKey(text(ctx['elem'].id), key1); } @@ -34,7 +34,7 @@ exports[`Cascading renders after microtaskTick 2`] = ` ctx = Object.create(ctx); const [k_block1, v_block1, l_block1, c_block1] = prepareList(ctx['state']);; for (let i1 = 0; i1 < l_block1; i1++) { - ctx[\`elem\`] = v_block1[i1]; + ctx[\`elem\`] = k_block1[i1]; const key1 = ctx['elem'].id; c_block1[i1] = withKey(comp1({id: ctx['elem'].id}, key + \`__1__\${key1}\`, node, this, null), key1); } @@ -1901,7 +1901,7 @@ exports[`t-foreach with dynamic async component 1`] = ` ctx = Object.create(ctx); const [k_block1, v_block1, l_block1, c_block1] = prepareList(ctx['list']);; for (let i1 = 0; i1 < l_block1; i1++) { - ctx[\`arr\`] = v_block1[i1]; + ctx[\`arr\`] = k_block1[i1]; ctx[\`arr_index\`] = i1; const key1 = ctx['arr_index']; let b3; diff --git a/tests/components/__snapshots__/error_handling.test.ts.snap b/tests/components/__snapshots__/error_handling.test.ts.snap index e326292d..aec2b19d 100644 --- a/tests/components/__snapshots__/error_handling.test.ts.snap +++ b/tests/components/__snapshots__/error_handling.test.ts.snap @@ -950,7 +950,7 @@ exports[`can catch errors catching error, rethrow, render parent -- a main comp ctx = Object.create(ctx); const [k_block1, v_block1, l_block1, c_block1] = prepareList(Object.values(ctx['state'].cps));; for (let i1 = 0; i1 < l_block1; i1++) { - ctx[\`cp\`] = v_block1[i1]; + ctx[\`cp\`] = k_block1[i1]; const key1 = ctx['cp'].id; const v1 = ctx['this']; const v2 = ctx['cp']; @@ -1029,7 +1029,7 @@ exports[`can catch errors catching in child makes parent render 1`] = ` ctx = Object.create(ctx); const [k_block1, v_block1, l_block1, c_block1] = prepareList(Object.entries(ctx['this'].elements));; for (let i1 = 0; i1 < l_block1; i1++) { - ctx[\`elem\`] = v_block1[i1]; + ctx[\`elem\`] = k_block1[i1]; const key1 = ctx['elem'][0]; const v1 = ctx['this']; const v2 = ctx['elem']; diff --git a/tests/components/__snapshots__/event_handling.test.ts.snap b/tests/components/__snapshots__/event_handling.test.ts.snap index 3884bf07..9beb83f7 100644 --- a/tests/components/__snapshots__/event_handling.test.ts.snap +++ b/tests/components/__snapshots__/event_handling.test.ts.snap @@ -117,7 +117,7 @@ exports[`event handling objects from scope are properly captured by t-on 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['items']);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`item\`] = v_block2[i1]; + ctx[\`item\`] = k_block2[i1]; const key1 = ctx['item']; const v1 = ctx['onClick']; const v2 = ctx['item']; @@ -158,7 +158,7 @@ exports[`event handling t-on with handler bound to dynamic argument on a t-forea ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['items']);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`item\`] = v_block2[i1]; + ctx[\`item\`] = k_block2[i1]; const key1 = ctx['item']; const v1 = ctx['onClick']; const v2 = ctx['item']; diff --git a/tests/components/__snapshots__/props.test.ts.snap b/tests/components/__snapshots__/props.test.ts.snap index 840c577f..7a0f8b1f 100644 --- a/tests/components/__snapshots__/props.test.ts.snap +++ b/tests/components/__snapshots__/props.test.ts.snap @@ -11,7 +11,7 @@ exports[`.alike suffix in a list 1`] = ` ctx = Object.create(ctx); const [k_block1, v_block1, l_block1, c_block1] = prepareList(ctx['state'].elems);; for (let i1 = 0; i1 < l_block1; i1++) { - ctx[\`elem\`] = v_block1[i1]; + ctx[\`elem\`] = k_block1[i1]; const key1 = ctx['elem'].id; const v1 = ctx['this']; const v2 = ctx['elem']; @@ -106,7 +106,7 @@ exports[`basics arrow functions as prop correctly capture their scope 1`] = ` ctx = Object.create(ctx); const [k_block1, v_block1, l_block1, c_block1] = prepareList(ctx['items']);; for (let i1 = 0; i1 < l_block1; i1++) { - ctx[\`item\`] = v_block1[i1]; + ctx[\`item\`] = k_block1[i1]; const key1 = ctx['item'].val; const v1 = ctx['onClick']; const v2 = ctx['item']; diff --git a/tests/components/__snapshots__/slots.test.ts.snap b/tests/components/__snapshots__/slots.test.ts.snap index 8a45d655..dc8584e0 100644 --- a/tests/components/__snapshots__/slots.test.ts.snap +++ b/tests/components/__snapshots__/slots.test.ts.snap @@ -2140,7 +2140,7 @@ exports[`slots slot in t-foreach locations 2`] = ` ctx = Object.create(ctx); const [k_block1, v_block1, l_block1, c_block1] = prepareList(ctx['props'].list);; for (let i1 = 0; i1 < l_block1; i1++) { - ctx[\`elem\`] = v_block1[i1]; + ctx[\`elem\`] = k_block1[i1]; ctx[\`elem_index\`] = i1; const key1 = ctx['elem_index']; let txt1 = ctx['elem']; @@ -2430,7 +2430,7 @@ exports[`slots slots are rendered with proper context, part 2 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['state'].users);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`user\`] = v_block2[i1]; + ctx[\`user\`] = k_block2[i1]; const key1 = ctx['user'].id; const ctx1 = capture(ctx); const b7 = comp1({to: '/user/'+ctx['user'].id,slots: markRaw({'default': {__render: slot1.bind(this), __ctx: ctx1}})}, key + \`__1__\${key1}\`, node, this, null); @@ -2478,7 +2478,7 @@ exports[`slots slots are rendered with proper context, part 3 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['state'].users);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`user\`] = v_block2[i1]; + ctx[\`user\`] = k_block2[i1]; const key1 = ctx['user'].id; setContextValue(ctx, \\"userdescr\\", 'User '+ctx['user'].name); const ctx1 = capture(ctx); @@ -2625,7 +2625,7 @@ exports[`slots slots in t-foreach and re-rendering 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(Array(2));; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`n\`] = v_block2[i1]; + ctx[\`n\`] = k_block2[i1]; ctx[\`n_index\`] = i1; const key1 = ctx['n_index']; const ctx1 = capture(ctx); @@ -2674,14 +2674,14 @@ exports[`slots slots in t-foreach in t-foreach 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['tree']);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`node1\`] = v_block2[i1]; + ctx[\`node1\`] = k_block2[i1]; const key1 = ctx['node1'].key; let txt1 = ctx['node1'].value; const b4 = block4([txt1]); ctx = Object.create(ctx); const [k_block6, v_block6, l_block6, c_block6] = prepareList(ctx['node1'].nodes);; for (let i2 = 0; i2 < l_block6; i2++) { - ctx[\`node2\`] = v_block6[i2]; + ctx[\`node2\`] = k_block6[i2]; const key2 = ctx['node2'].key; const ctx1 = capture(ctx); c_block6[i2] = withKey(comp1({slots: markRaw({'default': {__render: slot1.bind(this), __ctx: ctx1}})}, key + \`__1__\${key1}__\${key2}\`, node, this, null), key2); @@ -2731,7 +2731,7 @@ exports[`slots slots in t-foreach with t-set and re-rendering 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(Array(2));; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`n\`] = v_block2[i1]; + ctx[\`n\`] = k_block2[i1]; ctx[\`n_index\`] = i1; const key1 = ctx['n_index']; setContextValue(ctx, \\"dummy\\", ctx['n_index']); @@ -2881,11 +2881,11 @@ exports[`slots t-slot in recursive templates 1`] = ` ctx = Object.create(ctx); const [k_block3, v_block3, l_block3, c_block3] = prepareList(ctx['items']);; for (let i1 = 0; i1 < l_block3; i1++) { - ctx[\`item\`] = v_block3[i1]; + ctx[\`item\`] = k_block3[i1]; ctx[\`item_first\`] = i1 === 0; - ctx[\`item_last\`] = i1 === v_block3.length - 1; + ctx[\`item_last\`] = i1 === k_block3.length - 1; ctx[\`item_index\`] = i1; - ctx[\`item_value\`] = k_block3[i1]; + ctx[\`item_value\`] = v_block3[i1]; const key1 = ctx['item'].name; let b5,b6; if (!ctx['item'].children.length) { diff --git a/tests/components/__snapshots__/t_call.test.ts.snap b/tests/components/__snapshots__/t_call.test.ts.snap index b5825bdc..4e95b6c0 100644 --- a/tests/components/__snapshots__/t_call.test.ts.snap +++ b/tests/components/__snapshots__/t_call.test.ts.snap @@ -415,11 +415,11 @@ exports[`t-call t-call in t-foreach and children component 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(['a','b','c']);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`val\`] = v_block2[i1]; + ctx[\`val\`] = k_block2[i1]; ctx[\`val_first\`] = i1 === 0; - ctx[\`val_last\`] = i1 === v_block2.length - 1; + ctx[\`val_last\`] = i1 === k_block2.length - 1; ctx[\`val_index\`] = i1; - ctx[\`val_value\`] = k_block2[i1]; + ctx[\`val_value\`] = v_block2[i1]; const key1 = ctx['val']; c_block2[i1] = withKey(callTemplate_1.call(this, ctx, node, key + \`__1__\${key1}\`), key1); } diff --git a/tests/components/__snapshots__/t_foreach.test.ts.snap b/tests/components/__snapshots__/t_foreach.test.ts.snap index 819b7040..51bd1cb8 100644 --- a/tests/components/__snapshots__/t_foreach.test.ts.snap +++ b/tests/components/__snapshots__/t_foreach.test.ts.snap @@ -14,7 +14,7 @@ exports[`list of components components in a node in a t-foreach 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['items']);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`item\`] = v_block2[i1]; + ctx[\`item\`] = k_block2[i1]; const key1 = 'li_'+ctx['item']; const b4 = comp1({item: ctx['item']}, key + \`__1__\${key1}\`, node, this, null); c_block2[i1] = withKey(block3([], [b4]), key1); @@ -51,7 +51,7 @@ exports[`list of components crash on duplicate key in dev mode 1`] = ` const [k_block1, v_block1, l_block1, c_block1] = prepareList([1,2]);; const keys1 = new Set(); for (let i1 = 0; i1 < l_block1; i1++) { - ctx[\`item\`] = v_block1[i1]; + ctx[\`item\`] = k_block1[i1]; const key1 = 'child'; if (keys1.has(String(key1))) { throw new OwlError(\`Got duplicate key in t-foreach: \${key1}\`)} keys1.add(String(key1)); @@ -87,7 +87,7 @@ exports[`list of components crash when using object as keys that serialize to th const [k_block1, v_block1, l_block1, c_block1] = prepareList([{},{}]);; const keys1 = new Set(); for (let i1 = 0; i1 < l_block1; i1++) { - ctx[\`item\`] = v_block1[i1]; + ctx[\`item\`] = k_block1[i1]; const key1 = ctx['item']; if (keys1.has(String(key1))) { throw new OwlError(\`Got duplicate key in t-foreach: \${key1}\`)} keys1.add(String(key1)); @@ -125,7 +125,7 @@ exports[`list of components list of sub components inside other nodes 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['state'].blips);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`blip\`] = v_block2[i1]; + ctx[\`blip\`] = k_block2[i1]; const key1 = ctx['blip'].id; const b4 = comp1({}, key + \`__1__\${key1}\`, node, this, null); c_block2[i1] = withKey(block3([], [b4]), key1); @@ -191,7 +191,7 @@ exports[`list of components order is correct when slots are not of same type 2`] ctx = Object.create(ctx); const [k_block1, v_block1, l_block1, c_block1] = prepareList(ctx['slotNames']);; for (let i1 = 0; i1 < l_block1; i1++) { - ctx[\`slotName\`] = v_block1[i1]; + ctx[\`slotName\`] = k_block1[i1]; const key1 = ctx['slotName']; const slot1 = (ctx['slotName']); c_block1[i1] = withKey(toggler(slot1, callSlot(ctx, node, key1 + \`__1__\${key1}\`, slot1, true, {})), key1); @@ -214,13 +214,13 @@ exports[`list of components reconciliation alg works for t-foreach in t-foreach ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['state'].s);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`section\`] = v_block2[i1]; + ctx[\`section\`] = k_block2[i1]; ctx[\`section_index\`] = i1; const key1 = ctx['section_index']; ctx = Object.create(ctx); const [k_block3, v_block3, l_block3, c_block3] = prepareList(ctx['section'].blips);; for (let i2 = 0; i2 < l_block3; i2++) { - ctx[\`blip\`] = v_block3[i2]; + ctx[\`blip\`] = k_block3[i2]; ctx[\`blip_index\`] = i2; const key2 = ctx['blip_index']; c_block3[i2] = withKey(comp1({blip: ctx['blip']}, key + \`__1__\${key1}__\${key2}\`, node, this, null), key2); @@ -263,12 +263,12 @@ exports[`list of components reconciliation alg works for t-foreach in t-foreach, ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['state'].rows);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`row\`] = v_block2[i1]; + ctx[\`row\`] = k_block2[i1]; const key1 = ctx['row']; ctx = Object.create(ctx); const [k_block4, v_block4, l_block4, c_block4] = prepareList(ctx['state'].cols);; for (let i2 = 0; i2 < l_block4; i2++) { - ctx[\`col\`] = v_block4[i2]; + ctx[\`col\`] = k_block4[i2]; const key2 = ctx['col']; const b6 = comp1({row: ctx['row'],col: ctx['col']}, key + \`__1__\${key1}__\${key2}\`, node, this, null); c_block4[i2] = withKey(block5([], [b6]), key2); @@ -308,7 +308,7 @@ exports[`list of components simple list 1`] = ` ctx = Object.create(ctx); const [k_block1, v_block1, l_block1, c_block1] = prepareList(ctx['state'].elems);; for (let i1 = 0; i1 < l_block1; i1++) { - ctx[\`elem\`] = v_block1[i1]; + ctx[\`elem\`] = k_block1[i1]; const key1 = ctx['elem'].id; c_block1[i1] = withKey(comp1({value: ctx['elem'].value}, key + \`__1__\${key1}\`, node, this, null), key1); } @@ -344,7 +344,7 @@ exports[`list of components sub components rendered in a loop 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['state'].numbers);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`number\`] = v_block2[i1]; + ctx[\`number\`] = k_block2[i1]; const key1 = ctx['number']; c_block2[i1] = withKey(comp1({n: ctx['number']}, key + \`__1__\${key1}\`, node, this, null), key1); } @@ -381,7 +381,7 @@ exports[`list of components sub components with some state rendered in a loop 1` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['state'].numbers);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`number\`] = v_block2[i1]; + ctx[\`number\`] = k_block2[i1]; const key1 = ctx['number']; c_block2[i1] = withKey(comp1({}, key + \`__1__\${key1}\`, node, this, null), key1); } @@ -418,7 +418,7 @@ exports[`list of components switch component position 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['clist']);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`c\`] = v_block2[i1]; + ctx[\`c\`] = k_block2[i1]; const key1 = ctx['c']; c_block2[i1] = withKey(comp1({key: ctx['c']}, key + \`__1__\${key1}\`, node, this, null), key1); } @@ -455,7 +455,7 @@ exports[`list of components t-foreach with t-component, and update 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(Array(2));; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`n\`] = v_block2[i1]; + ctx[\`n\`] = k_block2[i1]; ctx[\`n_index\`] = i1; const key1 = ctx['n_index']; c_block2[i1] = withKey(comp1({val: ctx['n_index']}, key + \`__1__\${key1}\`, node, this, null), key1); diff --git a/tests/components/__snapshots__/t_key.test.ts.snap b/tests/components/__snapshots__/t_key.test.ts.snap index bde84761..71d83b3c 100644 --- a/tests/components/__snapshots__/t_key.test.ts.snap +++ b/tests/components/__snapshots__/t_key.test.ts.snap @@ -13,7 +13,7 @@ exports[`t-key t-foreach with t-key switch component position 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['clist']);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`c\`] = v_block2[i1]; + ctx[\`c\`] = k_block2[i1]; const key1 = ctx['c']; const tKey_1 = ctx['key1']; c_block2[i1] = withKey(comp1({key: ctx['c']+ctx['key1']}, tKey_1 + key + \`__1__\${key1}\`, node, this, null), tKey_1 + key1); diff --git a/tests/components/__snapshots__/t_model.test.ts.snap b/tests/components/__snapshots__/t_model.test.ts.snap index 7b30a6cb..7c08e043 100644 --- a/tests/components/__snapshots__/t_model.test.ts.snap +++ b/tests/components/__snapshots__/t_model.test.ts.snap @@ -196,7 +196,7 @@ exports[`t-model directive in a t-foreach 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['state']);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`thing\`] = v_block2[i1]; + ctx[\`thing\`] = k_block2[i1]; const key1 = ctx['thing'].id; const bExpr1 = ctx['thing']; const expr1 = 'f'; @@ -223,7 +223,7 @@ exports[`t-model directive in a t-foreach, part 2 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['state']);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`thing\`] = v_block2[i1]; + ctx[\`thing\`] = k_block2[i1]; ctx[\`thing_index\`] = i1; const key1 = ctx['thing_index']; const bExpr1 = ctx['state']; @@ -251,7 +251,7 @@ exports[`t-model directive in a t-foreach, part 3 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['names']);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`name\`] = v_block2[i1]; + ctx[\`name\`] = k_block2[i1]; ctx[\`name_index\`] = i1; const key1 = ctx['name_index']; const bExpr1 = ctx['state'].values; @@ -485,7 +485,7 @@ exports[`t-model directive t-model with dynamic number values on select options ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['state'].options);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`o\`] = v_block2[i1]; + ctx[\`o\`] = k_block2[i1]; const key1 = ctx['o'].value; let attr1 = ctx['o'].value; let attr2 = bValue1 === ctx['o'].value; @@ -586,7 +586,7 @@ exports[`t-model directive t-model with dynamic values on select options in fore ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['options']);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`v\`] = v_block2[i1]; + ctx[\`v\`] = k_block2[i1]; const key1 = ctx['v']; let attr1 = ctx['v']; let attr2 = bValue1 === ctx['v']; @@ -613,7 +613,7 @@ exports[`t-model directive t-model with radio button group in t-foreach 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['options']);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`opt\`] = v_block2[i1]; + ctx[\`opt\`] = k_block2[i1]; const key1 = ctx['opt']; let prop1 = new String((ctx['opt']) === 0 ? 0 : ((ctx['opt']) || \\"\\")); let attr1 = ctx['opt']; diff --git a/tests/components/__snapshots__/t_on.test.ts.snap b/tests/components/__snapshots__/t_on.test.ts.snap index 7b81880f..16c0fc71 100644 --- a/tests/components/__snapshots__/t_on.test.ts.snap +++ b/tests/components/__snapshots__/t_on.test.ts.snap @@ -16,7 +16,7 @@ exports[`t-on t-on expression captured in t-foreach 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['arr']);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`val\`] = v_block2[i1]; + ctx[\`val\`] = k_block2[i1]; const key1 = ctx['val']; const v1 = ctx['otherState']; const v2 = ctx['iter']; @@ -43,7 +43,7 @@ exports[`t-on t-on expression in t-foreach 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['state'].values);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`val\`] = v_block2[i1]; + ctx[\`val\`] = k_block2[i1]; ctx[\`val_index\`] = i1; const key1 = ctx['val']; let txt1 = ctx['val_index']; @@ -75,7 +75,7 @@ exports[`t-on t-on expression in t-foreach with t-set 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['state'].values);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`val\`] = v_block2[i1]; + ctx[\`val\`] = k_block2[i1]; ctx[\`val_index\`] = i1; const key1 = ctx['val']; setContextValue(ctx, \\"bossa\\", ctx['bossa']+'_'+ctx['val_index']); @@ -106,7 +106,7 @@ exports[`t-on t-on method call in t-foreach 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['state'].values);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`val\`] = v_block2[i1]; + ctx[\`val\`] = k_block2[i1]; ctx[\`val_index\`] = i1; const key1 = ctx['val']; let txt1 = ctx['val_index']; @@ -196,7 +196,7 @@ exports[`t-on t-on on components and t-foreach 1`] = ` ctx = Object.create(ctx); const [k_block1, v_block1, l_block1, c_block1] = prepareList(['John','Raoul','Gérald']);; for (let i1 = 0; i1 < l_block1; i1++) { - ctx[\`name\`] = v_block1[i1]; + ctx[\`name\`] = k_block1[i1]; const key1 = ctx['name']; const v1 = ctx['this']; const v2 = ctx['name']; @@ -493,7 +493,7 @@ exports[`t-on t-on when first component child is an empty component 2`] = ` ctx = Object.create(ctx); const [k_block1, v_block1, l_block1, c_block1] = prepareList(ctx['props'].list);; for (let i1 = 0; i1 < l_block1; i1++) { - ctx[\`c\`] = v_block1[i1]; + ctx[\`c\`] = k_block1[i1]; ctx[\`c_index\`] = i1; const key1 = ctx['c_index']; let txt1 = ctx['c']; diff --git a/tests/components/__snapshots__/t_out.test.ts.snap b/tests/components/__snapshots__/t_out.test.ts.snap index 3e2af694..1ecd6367 100644 --- a/tests/components/__snapshots__/t_out.test.ts.snap +++ b/tests/components/__snapshots__/t_out.test.ts.snap @@ -17,7 +17,7 @@ exports[`components in t-out simple list 1`] = ` ctx = Object.create(ctx); const [k_block1, v_block1, l_block1, c_block1] = prepareList([1,2]);; for (let i1 = 0; i1 < l_block1; i1++) { - ctx[\`n\`] = v_block1[i1]; + ctx[\`n\`] = k_block1[i1]; const key1 = ctx['n']; ctx[\`blabla\`] = new LazyValue(value1, ctx, this, node, key1); c_block1[i1] = withKey(safeOutput(ctx['blabla']), key1); diff --git a/tests/misc/__snapshots__/portal.test.ts.snap b/tests/misc/__snapshots__/portal.test.ts.snap index 5840ced6..951e4eeb 100644 --- a/tests/misc/__snapshots__/portal.test.ts.snap +++ b/tests/misc/__snapshots__/portal.test.ts.snap @@ -18,7 +18,7 @@ exports[`Portal Add and remove portals 1`] = ` ctx = Object.create(ctx); const [k_block1, v_block1, l_block1, c_block1] = prepareList(ctx['portalIds']);; for (let i1 = 0; i1 < l_block1; i1++) { - ctx[\`portalId\`] = v_block1[i1]; + ctx[\`portalId\`] = k_block1[i1]; const key1 = ctx['portalId']; const ctx1 = capture(ctx); c_block1[i1] = withKey(comp1({target: '#outside',slots: {'default': {__render: slot1.bind(this), __ctx: ctx1}}}, key + \`__1__\${key1}\`, node, ctx, Portal), key1); @@ -47,7 +47,7 @@ exports[`Portal Add and remove portals on div 1`] = ` ctx = Object.create(ctx); const [k_block1, v_block1, l_block1, c_block1] = prepareList(ctx['portalIds']);; for (let i1 = 0; i1 < l_block1; i1++) { - ctx[\`portalId\`] = v_block1[i1]; + ctx[\`portalId\`] = k_block1[i1]; const key1 = ctx['portalId']; const ctx1 = capture(ctx); c_block1[i1] = withKey(comp1({target: '#outside',slots: {'default': {__render: slot1.bind(this), __ctx: ctx1}}}, key + \`__1__\${key1}\`, node, ctx, Portal), key1); @@ -77,7 +77,7 @@ exports[`Portal Add and remove portals with t-foreach 1`] = ` ctx = Object.create(ctx); const [k_block1, v_block1, l_block1, c_block1] = prepareList(ctx['portalIds']);; for (let i1 = 0; i1 < l_block1; i1++) { - ctx[\`portalId\`] = v_block1[i1]; + ctx[\`portalId\`] = k_block1[i1]; const key1 = ctx['portalId']; let txt1 = ctx['portalId']; const ctx1 = capture(ctx); @@ -109,7 +109,7 @@ exports[`Portal Add and remove portals with t-foreach and destroy 1`] = ` ctx = Object.create(ctx); const [k_block1, v_block1, l_block1, c_block1] = prepareList(ctx['portalIds']);; for (let i1 = 0; i1 < l_block1; i1++) { - ctx[\`portalId\`] = v_block1[i1]; + ctx[\`portalId\`] = k_block1[i1]; const key1 = ctx['portalId']; let txt1 = ctx['portalId']; const ctx1 = capture(ctx); @@ -142,7 +142,7 @@ exports[`Portal Add and remove portals with t-foreach inside div 1`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList(ctx['portalIds']);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`portalId\`] = v_block2[i1]; + ctx[\`portalId\`] = k_block2[i1]; const key1 = ctx['portalId']; let txt1 = ctx['portalId']; const ctx1 = capture(ctx); @@ -429,7 +429,7 @@ exports[`Portal conditional use of Portal with child and div 2`] = ` ctx = Object.create(ctx); const [k_block2, v_block2, l_block2, c_block2] = prepareList([1]);; for (let i1 = 0; i1 < l_block2; i1++) { - ctx[\`elem\`] = v_block2[i1]; + ctx[\`elem\`] = k_block2[i1]; const key1 = ctx['elem']; const ctx1 = capture(ctx); c_block2[i1] = withKey(comp1({target: '#outside',slots: {'default': {__render: slot1.bind(this), __ctx: ctx1}}}, key + \`__1__\${key1}\`, node, ctx, Portal), key1); @@ -479,7 +479,7 @@ exports[`Portal conditional use of Portal with child and div, variation 2`] = ` ctx = Object.create(ctx); const [k_block3, v_block3, l_block3, c_block3] = prepareList([1]);; for (let i1 = 0; i1 < l_block3; i1++) { - ctx[\`elem\`] = v_block3[i1]; + ctx[\`elem\`] = k_block3[i1]; const key1 = ctx['elem']; const ctx1 = capture(ctx); c_block3[i1] = withKey(comp1({target: '#outside',slots: {'default': {__render: slot1.bind(this), __ctx: ctx1}}}, key + \`__1__\${key1}\`, node, ctx, Portal), key1);