diff --git a/.changeset/unlucky-trees-lick.md b/.changeset/unlucky-trees-lick.md new file mode 100644 index 0000000000..6e6f68b7c6 --- /dev/null +++ b/.changeset/unlucky-trees-lick.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: ensure if block is executed in correct order diff --git a/packages/svelte/src/internal/client/runtime.js b/packages/svelte/src/internal/client/runtime.js index 6fb4cc927a..8704324453 100644 --- a/packages/svelte/src/internal/client/runtime.js +++ b/packages/svelte/src/internal/client/runtime.js @@ -843,7 +843,7 @@ export function get(signal) { current_dependencies_index++; } else if (current_dependencies === null) { current_dependencies = [signal]; - } else if (signal !== current_dependencies[current_dependencies.length - 1]) { + } else { current_dependencies.push(signal); } if ( diff --git a/packages/svelte/tests/runtime-runes/samples/block-dependency-sequence/Component.svelte b/packages/svelte/tests/runtime-runes/samples/block-dependency-sequence/Component.svelte new file mode 100644 index 0000000000..ef8f82b73a --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/block-dependency-sequence/Component.svelte @@ -0,0 +1,9 @@ + + +
+ {#if item} + {item.length} + {/if} +
diff --git a/packages/svelte/tests/runtime-runes/samples/block-dependency-sequence/_config.js b/packages/svelte/tests/runtime-runes/samples/block-dependency-sequence/_config.js new file mode 100644 index 0000000000..36e7a4d50c --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/block-dependency-sequence/_config.js @@ -0,0 +1,17 @@ +import { flushSync } from 'svelte'; +import { test } from '../../test'; + +export default test({ + async test({ assert, target, component }) { + const [b1, b2] = target.querySelectorAll('button'); + assert.htmlEqual(target.innerHTML, '
5
5
3
+