1
0
1010`); + + resolve_c.click(); + await tick(); + assert.htmlEqual(target.innerHTML, `${buttons}1
1
9999`); + } +}); diff --git a/packages/svelte/tests/runtime-runes/samples/async-derived-assign-keeps-maybe-dirty/main.svelte b/packages/svelte/tests/runtime-runes/samples/async-derived-assign-keeps-maybe-dirty/main.svelte new file mode 100644 index 0000000000..08c00a4911 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/async-derived-assign-keeps-maybe-dirty/main.svelte @@ -0,0 +1,42 @@ + + + + + + + + + +{await delay('a', s)}
+{await delay('c', w)}
+ +{#if show} + {d} +{/if} + +{#if await delay('b', u)} + {await probe(d)} +{/if} diff --git a/packages/svelte/tests/runtime-runes/samples/async-eager-read-new-dependency/_config.js b/packages/svelte/tests/runtime-runes/samples/async-eager-read-new-dependency/_config.js new file mode 100644 index 0000000000..29eec8f6ff --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/async-eager-read-new-dependency/_config.js @@ -0,0 +1,28 @@ +import { tick } from 'svelte'; +import { test } from '../../test'; + +const buttons = ` + + + +`; + +// Same as `async-state-read-new-dependency`, but the branch is selected by an eager expression +// Earlier we said the reader inside it must still see the latest value of `value` rather than `undefined`, +// but that decision was adjusted, so this test now verifies the updated behavior. +export default test({ + mode: ['client'], + async test({ assert, target }) { + await tick(); + const [update, show, resolve] = target.querySelectorAll('button'); + + update.click(); // pending batch writes `value` + await tick(); + + show.click(); // eager flush creates the branch, which reads `value` for the first time and crashes + await tick(); + assert.htmlEqual(target.innerHTML, `${buttons}crash
`); + + resolve.click(); + } +}); diff --git a/packages/svelte/tests/runtime-runes/samples/async-eager-read-new-dependency/main.svelte b/packages/svelte/tests/runtime-runes/samples/async-eager-read-new-dependency/main.svelte new file mode 100644 index 0000000000..7a833346fb --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/async-eager-read-new-dependency/main.svelte @@ -0,0 +1,24 @@ + + + + + + +{await wait(value)} + +{#if $state.eager(show)} +{value.x}
+ {#snippet failed()} +crash
+ {/snippet} +true 1
`); + + commit.click(); + await tick(); + assert.htmlEqual(target.innerHTML, `${buttons}true 1
`); + } +}); diff --git a/packages/svelte/tests/runtime-runes/samples/async-fork-commit-empty/main.svelte b/packages/svelte/tests/runtime-runes/samples/async-fork-commit-empty/main.svelte new file mode 100644 index 0000000000..b4e35f29a7 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/async-fork-commit-empty/main.svelte @@ -0,0 +1,14 @@ + + + + + + +{open} {other} {error}