From dd4b8b97efc9e6c9fdd579b3fa5cca8c7d6909c4 Mon Sep 17 00:00:00 2001 From: ComputerGuy <63362464+Ocean-OS@users.noreply.github.com> Date: Mon, 2 Jun 2025 17:02:33 -0700 Subject: [PATCH] fix state declarations in constructors --- .../client/visitors/AssignmentExpression.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/AssignmentExpression.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/AssignmentExpression.js index 1b276e6128..9605f5edba 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/AssignmentExpression.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/AssignmentExpression.js @@ -52,7 +52,11 @@ const callees = { * @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' + ) { const name = get_name(left.property); const field = name && context.state.state_fields.get(name); @@ -70,7 +74,14 @@ function build_assignment(operator, left, right, context) { let value = /** @type {Expression} */ (context.visit(right, child_state)); if (dev) { - value = b.call('$.tag', value, b.literal(name)); + const declaration = context.path.find( + (parent) => parent.type === 'ClassDeclaration' || parent.type === 'ClassExpression' + ); + value = b.call( + '$.tag', + value, + b.literal(`${declaration?.id?.name ?? '[class]'}.${name}`) + ); } return b.assignment(operator, b.member(b.this, field.key), value);