Skip to content

Commit 3a9aa79

Browse files
committed
fix each indices
1 parent 6bb9757 commit 3a9aa79

File tree

5 files changed

+43
-8
lines changed

5 files changed

+43
-8
lines changed

packages/svelte/src/compiler/phases/scope.js

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -172,21 +172,18 @@ class Evaluation {
172172
binding.kind === 'rest_prop' ||
173173
binding.kind === 'bindable_prop';
174174

175+
if (binding.initial?.type === 'EachBlock' && binding.initial.index === expression.name) {
176+
this.values.add(NUMBER);
177+
break;
178+
}
179+
175180
if (!binding.updated && binding.initial !== null && !is_prop) {
176181
const evaluation = binding.scope.evaluate(/** @type {Expression} */ (binding.initial));
177182
for (const value of evaluation.values) {
178183
this.values.add(value);
179184
}
180185
break;
181186
}
182-
if (
183-
binding.kind === 'each' &&
184-
binding.initial?.type === 'EachBlock' &&
185-
binding.initial.index === expression.name
186-
) {
187-
this.values.add(NUMBER);
188-
break;
189-
}
190187
} else if (expression.name === 'undefined') {
191188
this.values.add(undefined);
192189
break;
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import { test } from '../../test';
2+
3+
export default test({});
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import 'svelte/internal/disclose-version';
2+
import 'svelte/internal/flags/legacy';
3+
import * as $ from 'svelte/internal/client';
4+
5+
var root_1 = $.template(`<p></p>`);
6+
7+
export default function Each_index_non_null($$anchor) {
8+
var fragment = $.comment();
9+
var node = $.first_child(fragment);
10+
11+
$.each(node, 0, () => Array(10), $.index, ($$anchor, $$item, i) => {
12+
var p = root_1();
13+
14+
p.textContent = `index: ${i}`;
15+
$.append($$anchor, p);
16+
});
17+
18+
$.append($$anchor, fragment);
19+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import * as $ from 'svelte/internal/server';
2+
3+
export default function Each_index_non_null($$payload) {
4+
const each_array = $.ensure_array_like(Array(10));
5+
6+
$$payload.out += `<!--[-->`;
7+
8+
for (let i = 0, $$length = each_array.length; i < $$length; i++) {
9+
$$payload.out += `<p>index: ${$.escape(i)}</p>`;
10+
}
11+
12+
$$payload.out += `<!--]-->`;
13+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{#each Array(10), i}
2+
<p>index: {i}</p>
3+
{/each}

0 commit comments

Comments
 (0)