From 92a4ab25569b52cfc56c9b7be5a6b12556652a09 Mon Sep 17 00:00:00 2001 From: ComputerGuy <63362464+Ocean-OS@users.noreply.github.com> Date: Sat, 4 Oct 2025 22:43:36 -0700 Subject: [PATCH] fix: correctly transform `$derived` private fields on server --- .changeset/seven-flies-drop.md | 5 +++++ .../phases/3-transform/server/visitors/MemberExpression.js | 6 +----- .../samples/class-state-derived-private/main.svelte | 3 ++- 3 files changed, 8 insertions(+), 6 deletions(-) create mode 100644 .changeset/seven-flies-drop.md diff --git a/.changeset/seven-flies-drop.md b/.changeset/seven-flies-drop.md new file mode 100644 index 0000000000..fed9c7dcac --- /dev/null +++ b/.changeset/seven-flies-drop.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: correctly transform `$derived` private fields on server diff --git a/packages/svelte/src/compiler/phases/3-transform/server/visitors/MemberExpression.js b/packages/svelte/src/compiler/phases/3-transform/server/visitors/MemberExpression.js index 50b5ae793f..6326e9efe2 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/visitors/MemberExpression.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/visitors/MemberExpression.js @@ -7,11 +7,7 @@ import * as b from '#compiler/builders'; * @param {Context} context */ export function MemberExpression(node, context) { - if ( - context.state.analysis.runes && - node.object.type === 'ThisExpression' && - node.property.type === 'PrivateIdentifier' - ) { + if (context.state.analysis.runes && node.property.type === 'PrivateIdentifier') { const field = context.state.state_fields?.get(`#${node.property.name}`); if (field?.type === '$derived' || field?.type === '$derived.by') { diff --git a/packages/svelte/tests/runtime-runes/samples/class-state-derived-private/main.svelte b/packages/svelte/tests/runtime-runes/samples/class-state-derived-private/main.svelte index d971566396..92a1f5ab94 100644 --- a/packages/svelte/tests/runtime-runes/samples/class-state-derived-private/main.svelte +++ b/packages/svelte/tests/runtime-runes/samples/class-state-derived-private/main.svelte @@ -9,7 +9,8 @@ } get embiggened1() { - return this.#doubled; + const self = this; + return self.#doubled; } get embiggened2() {