diff --git a/packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/utils.js b/packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/utils.js index 4dca75c6bb..bc59ebb387 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/utils.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/utils.js @@ -296,24 +296,26 @@ export function serialize_set_binding(node, context, fallback) { return fallback(); } - const is_store = is_store_name(left.name); - const left_name = is_store ? left.name.slice(1) : left.name; - const binding = state.scope.get(left_name); + if (!is_store_name(left.name)) { + return fallback(); + } + + const name = left.name.slice(1); - if (!binding || !is_store) { + if (!state.scope.get(name)) { // TODO error if it's a computed (or rest prop)? or does that already happen elsewhere? return fallback(); } if (left === node.left) { - return b.call('$.store_set', b.id(left_name), /** @type {Expression} */ (visit(node.right))); + return b.call('$.store_set', b.id(name), /** @type {Expression} */ (visit(node.right))); } return b.call( '$.mutate_store', b.assignment('??=', b.id('$$store_subs'), b.object([])), b.literal(left.name), - b.id(left_name), + b.id(name), b.assignment( node.operator, /** @type {Pattern} */ (visit(node.left)),