diff --git a/.changeset/curvy-beds-cover.md b/.changeset/curvy-beds-cover.md new file mode 100644 index 000000000000..f338cafffa0e --- /dev/null +++ b/.changeset/curvy-beds-cover.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: ensure each block references to imports are handled correctly diff --git a/packages/svelte/src/compiler/phases/2-analyze/index.js b/packages/svelte/src/compiler/phases/2-analyze/index.js index 188b06081311..89c2e19c3fa4 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/index.js +++ b/packages/svelte/src/compiler/phases/2-analyze/index.js @@ -505,7 +505,11 @@ export function analyze_component(root, source, options) { if (is_reference(node, parent)) { const binding = context.state.scope.get(node.name); - if (binding && binding.kind === 'normal') { + if ( + binding && + binding.kind === 'normal' && + binding.declaration_kind !== 'import' + ) { binding.kind = 'state'; binding.mutated = binding.updated = true; } diff --git a/packages/svelte/tests/runtime-legacy/samples/each-block-ref-import/_config.js b/packages/svelte/tests/runtime-legacy/samples/each-block-ref-import/_config.js new file mode 100644 index 000000000000..052cdd27c4b2 --- /dev/null +++ b/packages/svelte/tests/runtime-legacy/samples/each-block-ref-import/_config.js @@ -0,0 +1,6 @@ +import { test } from '../../test'; + +export default test({ + html: ``, + ssrHtml: `` +}); diff --git a/packages/svelte/tests/runtime-legacy/samples/each-block-ref-import/main.svelte b/packages/svelte/tests/runtime-legacy/samples/each-block-ref-import/main.svelte new file mode 100644 index 000000000000..26f629eb06f0 --- /dev/null +++ b/packages/svelte/tests/runtime-legacy/samples/each-block-ref-import/main.svelte @@ -0,0 +1,7 @@ + + +{#each foo.bar as bar} + +{/each} \ No newline at end of file diff --git a/packages/svelte/tests/runtime-legacy/samples/each-block-ref-import/utils.js b/packages/svelte/tests/runtime-legacy/samples/each-block-ref-import/utils.js new file mode 100644 index 000000000000..e4b44346570b --- /dev/null +++ b/packages/svelte/tests/runtime-legacy/samples/each-block-ref-import/utils.js @@ -0,0 +1,9 @@ +export const foo = { + get bar() { + return [ + { + value: '' + } + ]; + } +};