Skip to content

Commit cf63220

Browse files
authored
fix: ensure keyed fallback to indexed (#9441)
Fixes #9408. Ensures that if we have a key that matches the index, that we fallback to using an indexed each block.
1 parent da37c92 commit cf63220

File tree

4 files changed

+17
-1
lines changed

4 files changed

+17
-1
lines changed

.changeset/honest-icons-change.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'svelte': patch
3+
---
4+
5+
patch: ensure keyed each block fallback to indexed each block

packages/svelte/src/compiler/phases/3-transform/client/visitors/template.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2066,7 +2066,10 @@ export const template_visitors = {
20662066
/** @type {number} */
20672067
let each_type;
20682068

2069-
if (node.key) {
2069+
if (
2070+
node.key &&
2071+
(node.key.type !== 'Identifier' || !node.index || node.key.name !== node.index)
2072+
) {
20702073
each_type = EACH_KEYED;
20712074
if (
20722075
node.key.type === 'Identifier' &&
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { test } from '../../test';
2+
3+
export default test({
4+
html: '1'
5+
});
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{#each [1] as item, i (i)}
2+
{item}
3+
{/each}

0 commit comments

Comments
 (0)