pull/12614/head
Rich Harris 2 years ago
parent 8d3b17db6e
commit 497f639f4b

@ -296,24 +296,26 @@ export function serialize_set_binding(node, context, fallback) {
return fallback(); return fallback();
} }
const is_store = is_store_name(left.name); if (!is_store_name(left.name)) {
const left_name = is_store ? left.name.slice(1) : left.name; return fallback();
const binding = state.scope.get(left_name); }
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? // TODO error if it's a computed (or rest prop)? or does that already happen elsewhere?
return fallback(); return fallback();
} }
if (left === node.left) { 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( return b.call(
'$.mutate_store', '$.mutate_store',
b.assignment('??=', b.id('$$store_subs'), b.object([])), b.assignment('??=', b.id('$$store_subs'), b.object([])),
b.literal(left.name), b.literal(left.name),
b.id(left_name), b.id(name),
b.assignment( b.assignment(
node.operator, node.operator,
/** @type {Pattern} */ (visit(node.left)), /** @type {Pattern} */ (visit(node.left)),

Loading…
Cancel
Save