diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/template.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/template.js index 6e3e570454..bde6d1adf9 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/template.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/template.js @@ -227,36 +227,35 @@ function setup_select_synchronization(value_binding, context) { } } - const to_invalidate = context.state.analysis.runes - ? b.empty - : b.stmt( + if (!context.state.analysis.runes) { + const invalidator = b.call( + '$.invalidate_inner_signals', + b.thunk( + b.block( + names.map((name) => { + const serialized = serialize_get_binding(b.id(name), context.state); + return b.stmt(serialized); + }) + ) + ) + ); + + context.state.init.push( + b.stmt( b.call( - '$.invalidate_inner_signals', + '$.invalidate_effect', b.thunk( - b.block( - names.map((name) => { - const serialized = serialize_get_binding(b.id(name), context.state); - return b.stmt(serialized); - }) - ) + b.block([ + b.stmt( + /** @type {import('estree').Expression} */ (context.visit(value_binding.expression)) + ), + b.stmt(invalidator) + ]) ) ) - ); - context.state.init.push( - b.stmt( - b.call( - '$.invalidate_effect', - b.thunk( - b.block([ - b.stmt( - /** @type {import('estree').Expression} */ (context.visit(value_binding.expression)) - ), - to_invalidate - ]) - ) ) - ) - ); + ); + } } /**