diff --git a/.changeset/hip-penguins-unite.md b/.changeset/hip-penguins-unite.md new file mode 100644 index 000000000000..79fd69c24ae2 --- /dev/null +++ b/.changeset/hip-penguins-unite.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: visit expression when destructuring state declarations diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/VariableDeclaration.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/VariableDeclaration.js index e717077917f5..b8d692698dd7 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/VariableDeclaration.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/VariableDeclaration.js @@ -148,7 +148,7 @@ export function VariableDeclaration(node, context) { const { inserts, paths } = extract_paths(declarator.id, tmp); declarations.push( - b.declarator(tmp, value), + b.declarator(tmp, /** @type {Expression} */ (context.visit(value))), ...inserts.map(({ id, value }) => { id.name = context.state.scope.generate('$$array'); context.state.transform[id.name] = { read: get_value }; diff --git a/packages/svelte/tests/runtime-runes/samples/destructure-state-from-props/Child.svelte b/packages/svelte/tests/runtime-runes/samples/destructure-state-from-props/Child.svelte new file mode 100644 index 000000000000..0996a02b6065 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/destructure-state-from-props/Child.svelte @@ -0,0 +1,6 @@ + + +{foo} \ No newline at end of file diff --git a/packages/svelte/tests/runtime-runes/samples/destructure-state-from-props/_config.js b/packages/svelte/tests/runtime-runes/samples/destructure-state-from-props/_config.js new file mode 100644 index 000000000000..345654535b42 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/destructure-state-from-props/_config.js @@ -0,0 +1,5 @@ +import { test } from '../../test'; + +export default test({ + html: `bar` +}); diff --git a/packages/svelte/tests/runtime-runes/samples/destructure-state-from-props/main.svelte b/packages/svelte/tests/runtime-runes/samples/destructure-state-from-props/main.svelte new file mode 100644 index 000000000000..518f73314474 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/destructure-state-from-props/main.svelte @@ -0,0 +1,5 @@ + + + \ No newline at end of file