From 03d035acba60b56222d1d34baeab0dd0f6d374e5 Mon Sep 17 00:00:00 2001 From: ComputerGuy <63362464+Ocean-OS@users.noreply.github.com> Date: Thu, 27 Mar 2025 16:29:29 -0700 Subject: [PATCH] init --- .changeset/pink-lamps-leave.md | 5 +++ .../3-transform/client/visitors/ClassBody.js | 35 ++++++------------- 2 files changed, 16 insertions(+), 24 deletions(-) create mode 100644 .changeset/pink-lamps-leave.md diff --git a/.changeset/pink-lamps-leave.md b/.changeset/pink-lamps-leave.md new file mode 100644 index 000000000000..7ca9d8736229 --- /dev/null +++ b/.changeset/pink-lamps-leave.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: add setters to `$derived` class properties diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/ClassBody.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/ClassBody.js index 5787b590a8f9..24c20d7f947f 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/ClassBody.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/ClassBody.js @@ -142,30 +142,17 @@ export function ClassBody(node, context) { // get foo() { return this.#foo; } body.push(b.method('get', definition.key, [], [b.return(b.call('$.get', member))])); - if (field.kind === 'state' || field.kind === 'raw_state') { - // set foo(value) { this.#foo = value; } - const value = b.id('value'); - - body.push( - b.method( - 'set', - definition.key, - [value], - [b.stmt(b.call('$.set', member, value, field.kind === 'state' && b.true))] - ) - ); - } - - if (dev && (field.kind === 'derived' || field.kind === 'derived_by')) { - body.push( - b.method( - 'set', - definition.key, - [b.id('_')], - [b.throw_error(`Cannot update a derived property ('${name}')`)] - ) - ); - } + // set foo(value) { this.#foo = value; } + const val = b.id('value'); + + body.push( + b.method( + 'set', + definition.key, + [val], + [b.stmt(b.call('$.set', member, val, field.kind === 'state' && b.true))] + ) + ); } continue; }