From 7e0a81d102180e72ad12b22e9c061bd5ea955b11 Mon Sep 17 00:00:00 2001 From: ComputerGuy <63362464+Ocean-OS@users.noreply.github.com> Date: Sat, 31 May 2025 15:52:18 -0700 Subject: [PATCH] fix: correctly transform reassignments to class fields in SSR mode --- .changeset/rude-drinks-relate.md | 5 +++++ .../3-transform/server/visitors/AssignmentExpression.js | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 .changeset/rude-drinks-relate.md diff --git a/.changeset/rude-drinks-relate.md b/.changeset/rude-drinks-relate.md new file mode 100644 index 0000000000..d0eab6ba11 --- /dev/null +++ b/.changeset/rude-drinks-relate.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: correctly transform reassignments to class fields in SSR mode diff --git a/packages/svelte/src/compiler/phases/3-transform/server/visitors/AssignmentExpression.js b/packages/svelte/src/compiler/phases/3-transform/server/visitors/AssignmentExpression.js index 466682fb82..7a054fcbb4 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/visitors/AssignmentExpression.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/visitors/AssignmentExpression.js @@ -24,7 +24,12 @@ export function AssignmentExpression(node, context) { * @returns {Expression | null} */ function build_assignment(operator, left, right, context) { - if (context.state.analysis.runes && left.type === 'MemberExpression') { + if ( + context.state.analysis.runes && + left.type === 'MemberExpression' && + left.object.type === 'ThisExpression' && + !left.computed + ) { const name = get_name(left.property); const field = name && context.state.state_fields.get(name);