From 87818df16db4129ccf470f63ebba3f546c5e0984 Mon Sep 17 00:00:00 2001 From: paoloricciuti Date: Wed, 19 Nov 2025 18:08:59 +0100 Subject: [PATCH] fix: correctly migrate named self closing slots --- .changeset/fuzzy-fans-hammer.md | 5 +++++ packages/svelte/src/compiler/migrate/index.js | 8 +++++--- .../migrate/samples/self-closing-named-slot/input.svelte | 3 +++ .../migrate/samples/self-closing-named-slot/output.svelte | 5 +++++ 4 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 .changeset/fuzzy-fans-hammer.md create mode 100644 packages/svelte/tests/migrate/samples/self-closing-named-slot/input.svelte create mode 100644 packages/svelte/tests/migrate/samples/self-closing-named-slot/output.svelte diff --git a/.changeset/fuzzy-fans-hammer.md b/.changeset/fuzzy-fans-hammer.md new file mode 100644 index 0000000000..24af7fa8f5 --- /dev/null +++ b/.changeset/fuzzy-fans-hammer.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: correctly migrate named self closing slots diff --git a/packages/svelte/src/compiler/migrate/index.js b/packages/svelte/src/compiler/migrate/index.js index eb0e4eff8c..0d4691e9d6 100644 --- a/packages/svelte/src/compiler/migrate/index.js +++ b/packages/svelte/src/compiler/migrate/index.js @@ -1058,8 +1058,6 @@ const template = { handle_identifier(node, state, path); }, RegularElement(node, { state, path, next }) { - migrate_slot_usage(node, path, state); - handle_events(node, state); // Strip off any namespace from the beginning of the node name. const node_name = node.name.replace(/[a-zA-Z-]*:/g, ''); @@ -1067,8 +1065,12 @@ const template = { let trimmed_position = node.end - 2; while (state.str.original.charAt(trimmed_position - 1) === ' ') trimmed_position--; state.str.remove(trimmed_position, node.end - 1); - state.str.appendRight(node.end, ``); + state.str.appendLeft(node.end, ``); } + + migrate_slot_usage(node, path, state); + handle_events(node, state); + next(); }, SvelteSelf(node, { state, next }) { diff --git a/packages/svelte/tests/migrate/samples/self-closing-named-slot/input.svelte b/packages/svelte/tests/migrate/samples/self-closing-named-slot/input.svelte new file mode 100644 index 0000000000..33ca4e3b9f --- /dev/null +++ b/packages/svelte/tests/migrate/samples/self-closing-named-slot/input.svelte @@ -0,0 +1,3 @@ + +
+ \ No newline at end of file diff --git a/packages/svelte/tests/migrate/samples/self-closing-named-slot/output.svelte b/packages/svelte/tests/migrate/samples/self-closing-named-slot/output.svelte new file mode 100644 index 0000000000..6655bc9dd2 --- /dev/null +++ b/packages/svelte/tests/migrate/samples/self-closing-named-slot/output.svelte @@ -0,0 +1,5 @@ + + {#snippet test()} +
+ {/snippet} +
\ No newline at end of file