diff --git a/.changeset/weak-terms-destroy.md b/.changeset/weak-terms-destroy.md new file mode 100644 index 000000000000..eebe8bfce310 --- /dev/null +++ b/.changeset/weak-terms-destroy.md @@ -0,0 +1,5 @@ +--- +"svelte": patch +--- + +fix: visit expression node in directives diff --git a/packages/svelte/src/compiler/phases/scope.js b/packages/svelte/src/compiler/phases/scope.js index aae6b975491d..79d7877f5438 100644 --- a/packages/svelte/src/compiler/phases/scope.js +++ b/packages/svelte/src/compiler/phases/scope.js @@ -331,10 +331,14 @@ export function create_scopes(ast, root, allow_reactive_declarations, parent) { } /** - * @type {import('zimmerframe').Visitor} + * @type {import('zimmerframe').Visitor} */ - const SvelteDirective = (node, context) => { - context.state.scope.reference(b.id(node.name), context.path); + const SvelteDirective = (node, { state, path, visit }) => { + state.scope.reference(b.id(node.name), path); + + if (node.expression) { + visit(node.expression); + } }; walk(ast, state, { diff --git a/packages/svelte/tests/runtime-runes/samples/store-directive/main.svelte b/packages/svelte/tests/runtime-runes/samples/store-directive/main.svelte index 48d774f39db5..14166c48f235 100644 --- a/packages/svelte/tests/runtime-runes/samples/store-directive/main.svelte +++ b/packages/svelte/tests/runtime-runes/samples/store-directive/main.svelte @@ -1,9 +1,11 @@ -
hello
+
hello