From 80557bbc1c8a94c43a95bfbdc51d37764d2065ea Mon Sep 17 00:00:00 2001 From: Dominic Gannaway Date: Tue, 1 Apr 2025 15:59:44 +0100 Subject: [PATCH] fix: ensure clearing of old values happens independent of root flushes (#15664) * fix: ensure clearing of old values happens indepedent of root flushes * lint * test --- .changeset/kind-elephants-behave.md | 5 +++++ packages/svelte/src/internal/client/runtime.js | 2 +- .../samples/onmount-prop-access/Component.svelte | 12 ++++++++++++ .../samples/onmount-prop-access/_config.js | 7 +++++++ .../samples/onmount-prop-access/main.svelte | 14 ++++++++++++++ 5 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 .changeset/kind-elephants-behave.md create mode 100644 packages/svelte/tests/runtime-runes/samples/onmount-prop-access/Component.svelte create mode 100644 packages/svelte/tests/runtime-runes/samples/onmount-prop-access/_config.js create mode 100644 packages/svelte/tests/runtime-runes/samples/onmount-prop-access/main.svelte diff --git a/.changeset/kind-elephants-behave.md b/.changeset/kind-elephants-behave.md new file mode 100644 index 0000000000..f52dc1fd36 --- /dev/null +++ b/.changeset/kind-elephants-behave.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: ensure clearing of old values happens independent of root flushes diff --git a/packages/svelte/src/internal/client/runtime.js b/packages/svelte/src/internal/client/runtime.js index a5d26412a4..a69181da98 100644 --- a/packages/svelte/src/internal/client/runtime.js +++ b/packages/svelte/src/internal/client/runtime.js @@ -692,6 +692,7 @@ function flush_queued_root_effects() { var collected_effects = process_effects(root_effects[i]); flush_queued_effects(collected_effects); } + old_values.clear(); } } finally { is_flushing = false; @@ -701,7 +702,6 @@ function flush_queued_root_effects() { if (DEV) { dev_effect_stack = []; } - old_values.clear(); } } diff --git a/packages/svelte/tests/runtime-runes/samples/onmount-prop-access/Component.svelte b/packages/svelte/tests/runtime-runes/samples/onmount-prop-access/Component.svelte new file mode 100644 index 0000000000..b5da702fa7 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/onmount-prop-access/Component.svelte @@ -0,0 +1,12 @@ + diff --git a/packages/svelte/tests/runtime-runes/samples/onmount-prop-access/_config.js b/packages/svelte/tests/runtime-runes/samples/onmount-prop-access/_config.js new file mode 100644 index 0000000000..0d24e265d3 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/onmount-prop-access/_config.js @@ -0,0 +1,7 @@ +import { test } from '../../test'; + +export default test({ + async test({ assert, logs }) { + assert.deepEqual(logs, [1]); + } +}); diff --git a/packages/svelte/tests/runtime-runes/samples/onmount-prop-access/main.svelte b/packages/svelte/tests/runtime-runes/samples/onmount-prop-access/main.svelte new file mode 100644 index 0000000000..92746760a4 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/onmount-prop-access/main.svelte @@ -0,0 +1,14 @@ + + +{#key key} + +{/key}