diff --git a/packages/svelte/src/compiler/migrate/index.js b/packages/svelte/src/compiler/migrate/index.js index cc5344e5c2..b46ef809da 100644 --- a/packages/svelte/src/compiler/migrate/index.js +++ b/packages/svelte/src/compiler/migrate/index.js @@ -412,7 +412,11 @@ const instance_script = { const ids = extract_identifiers(node.body.expression.left); const bindings = ids.map((id) => state.scope.get(id.name)); 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 state.str.update( /** @type {number} */ (node.start), diff --git a/packages/svelte/tests/migrate/samples/effects/input.svelte b/packages/svelte/tests/migrate/samples/effects/input.svelte index f7f1edfb97..f95ad87bea 100644 --- a/packages/svelte/tests/migrate/samples/effects/input.svelte +++ b/packages/svelte/tests/migrate/samples/effects/input.svelte @@ -10,4 +10,5 @@ console.log('bar'); } $: $count = 1; + $: foo.bar = 1; diff --git a/packages/svelte/tests/migrate/samples/effects/output.svelte b/packages/svelte/tests/migrate/samples/effects/output.svelte index 006ce4b23d..054f9398e7 100644 --- a/packages/svelte/tests/migrate/samples/effects/output.svelte +++ b/packages/svelte/tests/migrate/samples/effects/output.svelte @@ -18,4 +18,7 @@ run(() => { $count = 1; }); + run(() => { + foo.bar = 1; + }); \ No newline at end of file