From a3fdd3d8b783221b04952b9fbeb747714890c941 Mon Sep 17 00:00:00 2001 From: ComputerGuy <63362464+Ocean-OS@users.noreply.github.com> Date: Wed, 30 Jul 2025 12:30:34 -0700 Subject: [PATCH] fix: correctly differentiate static fields before emitting `duplicate_class_field` --- .changeset/nine-cups-film.md | 5 +++++ .../compiler/phases/2-analyze/visitors/ClassBody.js | 10 ++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 .changeset/nine-cups-film.md diff --git a/.changeset/nine-cups-film.md b/.changeset/nine-cups-film.md new file mode 100644 index 0000000000..ba72337dac --- /dev/null +++ b/.changeset/nine-cups-film.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: correctly differentiate static fields before emitting `duplicate_class_field` diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/ClassBody.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/ClassBody.js index 2bfc1dbce3..ed68dae74e 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/ClassBody.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/ClassBody.js @@ -57,7 +57,10 @@ export function ClassBody(node, context) { e.state_field_duplicate(node, name); } - const _key = (key.type === 'PrivateIdentifier' ? '#' : '') + name; + const _key = + (node.type === 'AssignmentExpression' || !node.static ? '' : '@') + + (key.type === 'PrivateIdentifier' ? '#' : '') + + name; const field = fields.get(_key); // if there's already a method or assigned field, error @@ -91,7 +94,10 @@ export function ClassBody(node, context) { if (child.kind === 'constructor') { constructor = child; } else if (!child.computed) { - const key = (child.key.type === 'PrivateIdentifier' ? '#' : '') + get_name(child.key); + const key = + (child.static ? '@' : '') + + (child.key.type === 'PrivateIdentifier' ? '#' : '') + + get_name(child.key); const field = fields.get(key); if (!field) { fields.set(key, [child.kind]);