Skip to content

Commit a3fdd3d

Browse files
committed
fix: correctly differentiate static fields before emitting duplicate_class_field
1 parent d82edf6 commit a3fdd3d

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

.changeset/nine-cups-film.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'svelte': patch
3+
---
4+
5+
fix: correctly differentiate static fields before emitting `duplicate_class_field`

packages/svelte/src/compiler/phases/2-analyze/visitors/ClassBody.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,10 @@ export function ClassBody(node, context) {
5757
e.state_field_duplicate(node, name);
5858
}
5959

60-
const _key = (key.type === 'PrivateIdentifier' ? '#' : '') + name;
60+
const _key =
61+
(node.type === 'AssignmentExpression' || !node.static ? '' : '@') +
62+
(key.type === 'PrivateIdentifier' ? '#' : '') +
63+
name;
6164
const field = fields.get(_key);
6265

6366
// if there's already a method or assigned field, error
@@ -91,7 +94,10 @@ export function ClassBody(node, context) {
9194
if (child.kind === 'constructor') {
9295
constructor = child;
9396
} else if (!child.computed) {
94-
const key = (child.key.type === 'PrivateIdentifier' ? '#' : '') + get_name(child.key);
97+
const key =
98+
(child.static ? '@' : '') +
99+
(child.key.type === 'PrivateIdentifier' ? '#' : '') +
100+
get_name(child.key);
95101
const field = fields.get(key);
96102
if (!field) {
97103
fields.set(key, [child.kind]);

0 commit comments

Comments
 (0)