fix: correctly migrate reactive assignment with member expression

From https://github.com/sveltejs/kit/pull/12519#issuecomment-2258840595
migrate-member-assignment
Simon Holthausen 1 year ago
parent 9eca3d0736
commit d8951b5de7

@ -412,7 +412,11 @@ const instance_script = {
const ids = extract_identifiers(node.body.expression.left); const ids = extract_identifiers(node.body.expression.left);
const bindings = ids.map((id) => state.scope.get(id.name)); const bindings = ids.map((id) => state.scope.get(id.name));
const reassigned_bindings = bindings.filter((b) => b?.reassigned); const reassigned_bindings = bindings.filter((b) => b?.reassigned);
if (reassigned_bindings.length === 0 && !bindings.some((b) => b?.kind === 'store_sub')) { if (
reassigned_bindings.length === 0 &&
!bindings.some((b) => b?.kind === 'store_sub') &&
node.body.expression.left.type !== 'MemberExpression'
) {
// $derived // $derived
state.str.update( state.str.update(
/** @type {number} */ (node.start), /** @type {number} */ (node.start),

@ -10,4 +10,5 @@
console.log('bar'); console.log('bar');
} }
$: $count = 1; $: $count = 1;
$: foo.bar = 1;
</script> </script>

@ -18,4 +18,7 @@
run(() => { run(() => {
$count = 1; $count = 1;
}); });
run(() => {
foo.bar = 1;
});
</script> </script>
Loading…
Cancel
Save