From c72a6591fcd3836c957fad16392494090e081ca0 Mon Sep 17 00:00:00 2001 From: Dominic Gannaway Date: Fri, 17 Nov 2023 12:27:17 +0000 Subject: [PATCH 1/3] fix: add missing visit for expressions --- .../src/compiler/phases/3-transform/client/visitors/template.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/template.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/template.js index 942bfab8c6a1..615fafd88080 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/template.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/template.js @@ -775,7 +775,7 @@ function serialize_inline_component(node, component_name, context) { const assignment = b.assignment('=', attribute.expression, b.id('$$value')); push_prop( b.set(attribute.name, [ - b.stmt(serialize_set_binding(assignment, context, () => assignment)) + b.stmt(serialize_set_binding(assignment, context, () => context.visit(assignment))) ]) ); } From 854655e5f8c388edcfc3184d7f93256d96a3d95f Mon Sep 17 00:00:00 2001 From: Dominic Gannaway Date: Fri, 17 Nov 2023 12:27:51 +0000 Subject: [PATCH 2/3] fix: add missing visit for expressions --- .changeset/wicked-doors-train.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/wicked-doors-train.md diff --git a/.changeset/wicked-doors-train.md b/.changeset/wicked-doors-train.md new file mode 100644 index 000000000000..28b3271046a4 --- /dev/null +++ b/.changeset/wicked-doors-train.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: add missing visitor for assignments during compilation From 8643594f2d980a1bc1cb98e7c31f74636bb99648 Mon Sep 17 00:00:00 2001 From: Dominic Gannaway Date: Fri, 17 Nov 2023 12:54:25 +0000 Subject: [PATCH 3/3] Add test --- .../bind-state-property/CheckBox.svelte | 5 +++++ .../samples/bind-state-property/_config.js | 12 ++++++++++++ .../samples/bind-state-property/main.svelte | 18 ++++++++++++++++++ 3 files changed, 35 insertions(+) create mode 100644 packages/svelte/tests/runtime-runes/samples/bind-state-property/CheckBox.svelte create mode 100644 packages/svelte/tests/runtime-runes/samples/bind-state-property/_config.js create mode 100644 packages/svelte/tests/runtime-runes/samples/bind-state-property/main.svelte diff --git a/packages/svelte/tests/runtime-runes/samples/bind-state-property/CheckBox.svelte b/packages/svelte/tests/runtime-runes/samples/bind-state-property/CheckBox.svelte new file mode 100644 index 000000000000..172b6992057c --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/bind-state-property/CheckBox.svelte @@ -0,0 +1,5 @@ + + + diff --git a/packages/svelte/tests/runtime-runes/samples/bind-state-property/_config.js b/packages/svelte/tests/runtime-runes/samples/bind-state-property/_config.js new file mode 100644 index 000000000000..921fa71980a2 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/bind-state-property/_config.js @@ -0,0 +1,12 @@ +import { test } from '../../test'; + +export default test({ + html: `
\nChecked:\nfalse`, + + async test({ assert, target }) { + const input = target.querySelector('input'); + + await input?.click(); + assert.htmlEqual(target.innerHTML, `
\nChecked:\ntrue`); + } +}); diff --git a/packages/svelte/tests/runtime-runes/samples/bind-state-property/main.svelte b/packages/svelte/tests/runtime-runes/samples/bind-state-property/main.svelte new file mode 100644 index 000000000000..2a571c5dd17f --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/bind-state-property/main.svelte @@ -0,0 +1,18 @@ + + +{#if true} + {@const obj = wrap()} + +{/if} +
+Checked: {checked}