Skip to content

Commit acd9eaf

Browse files
authored
fix: ensure correct order of template effect values (#16655)
Compiler does sync then async but `memoizer.apply` did it the other way around
1 parent 11a2d8e commit acd9eaf

File tree

4 files changed

+32
-1
lines changed

4 files changed

+32
-1
lines changed

.changeset/healthy-crabs-marry.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+
fix: ensure correct order of template effect values

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export class Memoizer {
3434
}
3535

3636
apply() {
37-
return [...this.#async, ...this.#sync].map((memo, i) => {
37+
return [...this.#sync, ...this.#async].map((memo, i) => {
3838
memo.id.name = `$${i}`;
3939
return memo.id;
4040
});
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { tick } from 'svelte';
2+
import { ok, test } from '../../test';
3+
4+
export default test({
5+
async test({ assert, target }) {
6+
await tick();
7+
assert.htmlEqual(target.innerHTML, '<p>foo bar</p>');
8+
}
9+
});
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<script>
2+
function foo() {
3+
return 'foo';
4+
}
5+
6+
async function bar() {
7+
return Promise.resolve('bar');
8+
}
9+
</script>
10+
11+
<svelte:boundary>
12+
<p>{foo()} {await bar()}</p>
13+
14+
{#snippet pending()}
15+
<p>pending</p>
16+
{/snippet}
17+
</svelte:boundary>

0 commit comments

Comments
 (0)