From 073ef17028a2274bf86d243959aff6e32ba313ae Mon Sep 17 00:00:00 2001 From: Paolo Ricciuti Date: Thu, 3 Oct 2024 12:53:27 +0200 Subject: [PATCH] fix: move labeled statements that need reordering after props insertion point (#13480) --- .changeset/many-fishes-warn.md | 5 +++++ packages/svelte/src/compiler/migrate/index.js | 4 +++- .../tests/migrate/samples/props-and-labeled/input.svelte | 7 +++++++ .../tests/migrate/samples/props-and-labeled/output.svelte | 7 +++++++ 4 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 .changeset/many-fishes-warn.md create mode 100644 packages/svelte/tests/migrate/samples/props-and-labeled/input.svelte create mode 100644 packages/svelte/tests/migrate/samples/props-and-labeled/output.svelte diff --git a/.changeset/many-fishes-warn.md b/.changeset/many-fishes-warn.md new file mode 100644 index 0000000000..71037505b9 --- /dev/null +++ b/.changeset/many-fishes-warn.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: move labeled statements that need reordering after props insertion point diff --git a/packages/svelte/src/compiler/migrate/index.js b/packages/svelte/src/compiler/migrate/index.js index 04ec79ea43..0f397265a0 100644 --- a/packages/svelte/src/compiler/migrate/index.js +++ b/packages/svelte/src/compiler/migrate/index.js @@ -237,7 +237,9 @@ export function migrate(source) { dependencies.some( (dep) => !ids.includes(dep) && - /** @type {number} */ (dep.node.start) > /** @type {number} */ (node.start) + (dep.kind === 'prop' || dep.kind === 'bindable_prop' + ? state.props_insertion_point + : /** @type {number} */ (dep.node.start)) > /** @type {number} */ (node.start) ) ) { needs_reordering = true; diff --git a/packages/svelte/tests/migrate/samples/props-and-labeled/input.svelte b/packages/svelte/tests/migrate/samples/props-and-labeled/input.svelte new file mode 100644 index 0000000000..6243c84fab --- /dev/null +++ b/packages/svelte/tests/migrate/samples/props-and-labeled/input.svelte @@ -0,0 +1,7 @@ + + +{readonly} {optional} {writable} \ No newline at end of file diff --git a/packages/svelte/tests/migrate/samples/props-and-labeled/output.svelte b/packages/svelte/tests/migrate/samples/props-and-labeled/output.svelte new file mode 100644 index 0000000000..57893d11ac --- /dev/null +++ b/packages/svelte/tests/migrate/samples/props-and-labeled/output.svelte @@ -0,0 +1,7 @@ + + +{readonly} {optional} {writable} \ No newline at end of file