From e8a7c426d4f80afca31821997ef412824831328b Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Wed, 11 Jun 2025 19:38:10 -0400 Subject: [PATCH 1/2] remove errant log --- .../runtime-runes/samples/flush-sync-no-scheduled/_config.js | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/svelte/tests/runtime-runes/samples/flush-sync-no-scheduled/_config.js b/packages/svelte/tests/runtime-runes/samples/flush-sync-no-scheduled/_config.js index 33a59dfbd3..85e06fa8ec 100644 --- a/packages/svelte/tests/runtime-runes/samples/flush-sync-no-scheduled/_config.js +++ b/packages/svelte/tests/runtime-runes/samples/flush-sync-no-scheduled/_config.js @@ -5,7 +5,6 @@ export default test({ const btn = target.querySelector('button'); const main = target.querySelector('main'); ok(main); - console.log(main.innerHTML); assert.htmlEqual(main.innerHTML, `
true
`); // we don't want to use flush sync (or tick that use it inside) since we are testing that calling `flushSync` once // when there are no scheduled effects does not cause reactivity to break From f5a020d56bdf07cba501895a496c036172a6d995 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Wed, 11 Jun 2025 20:26:45 -0400 Subject: [PATCH 2/2] fix: correctly tag private class state fields (#16132) --- .changeset/three-steaks-wash.md | 5 +++ .../3-transform/client/visitors/ClassBody.js | 2 +- .../samples/inspect-trace-class/_config.js | 31 +++++++++++++++++++ .../samples/inspect-trace-class/main.svelte | 28 +++++++++++++++++ 4 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 .changeset/three-steaks-wash.md create mode 100644 packages/svelte/tests/runtime-runes/samples/inspect-trace-class/_config.js create mode 100644 packages/svelte/tests/runtime-runes/samples/inspect-trace-class/main.svelte diff --git a/.changeset/three-steaks-wash.md b/.changeset/three-steaks-wash.md new file mode 100644 index 0000000000..caf0ea2bfe --- /dev/null +++ b/.changeset/three-steaks-wash.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: correctly tag private class state fields diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/ClassBody.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/ClassBody.js index e78a8824dd..5bd9add2a5 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/ClassBody.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/ClassBody.js @@ -78,7 +78,7 @@ export function ClassBody(node, context) { ? /** @type {CallExpression} */ (context.visit(definition.value, child_state)) : undefined; - if (dev) { + if (dev && field.node === definition) { value = b.call('$.tag', value, b.literal(`${declaration.id?.name ?? '[class]'}.${name}`)); } diff --git a/packages/svelte/tests/runtime-runes/samples/inspect-trace-class/_config.js b/packages/svelte/tests/runtime-runes/samples/inspect-trace-class/_config.js new file mode 100644 index 0000000000..98b3fb6cbc --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/inspect-trace-class/_config.js @@ -0,0 +1,31 @@ +import { flushSync } from 'svelte'; +import { test } from '../../test'; +import { normalise_trace_logs } from '../../../helpers.js'; + +export default test({ + compileOptions: { + dev: true + }, + + test({ assert, target, logs }) { + assert.deepEqual(normalise_trace_logs(logs), [ + { log: 'effect' }, + { log: '$state', highlighted: true }, + { log: 'Counter.#count', highlighted: false }, + { log: 0 } + ]); + + logs.length = 0; + + const button = target.querySelector('button'); + button?.click(); + flushSync(); + + assert.deepEqual(normalise_trace_logs(logs), [ + { log: 'effect' }, + { log: '$state', highlighted: true }, + { log: 'Counter.#count', highlighted: false }, + { log: 1 } + ]); + } +}); diff --git a/packages/svelte/tests/runtime-runes/samples/inspect-trace-class/main.svelte b/packages/svelte/tests/runtime-runes/samples/inspect-trace-class/main.svelte new file mode 100644 index 0000000000..56bd497e09 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/inspect-trace-class/main.svelte @@ -0,0 +1,28 @@ + + +