From e3e7e775987f771db59e8d8e460c6c9ad31a59e9 Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Tue, 12 Nov 2024 17:34:42 +0100 Subject: [PATCH] fix(migration): named slots with reserved keywords --- packages/svelte/src/compiler/migrate/index.js | 4 ++-- .../migrate/samples/slot-non-identifier/input.svelte | 8 +++++++- .../migrate/samples/slot-non-identifier/output.svelte | 9 ++++++++- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/packages/svelte/src/compiler/migrate/index.js b/packages/svelte/src/compiler/migrate/index.js index 4942dd7db2..9db09158a1 100644 --- a/packages/svelte/src/compiler/migrate/index.js +++ b/packages/svelte/src/compiler/migrate/index.js @@ -17,7 +17,7 @@ import { } from '../utils/ast.js'; import { migrate_svelte_ignore } from '../utils/extract_svelte_ignore.js'; import { validate_component_options } from '../validate-options.js'; -import { is_svg, is_void } from '../../utils.js'; +import { is_reserved, is_svg, is_void } from '../../utils.js'; import { regex_is_valid_identifier } from '../phases/patterns.js'; const regex_style_tags = /(]+>)([\S\s]*?)(<\/style>)/g; @@ -1440,7 +1440,7 @@ function migrate_slot_usage(node, path, state) { if (snippet_name === 'default') { snippet_name = 'children'; } - if (!regex_is_valid_identifier.test(snippet_name)) { + if (!regex_is_valid_identifier.test(snippet_name) || is_reserved(snippet_name)) { has_migration_task = true; state.str.appendLeft( node.start, diff --git a/packages/svelte/tests/migrate/samples/slot-non-identifier/input.svelte b/packages/svelte/tests/migrate/samples/slot-non-identifier/input.svelte index a62eff1b74..7cf7dd86bb 100644 --- a/packages/svelte/tests/migrate/samples/slot-non-identifier/input.svelte +++ b/packages/svelte/tests/migrate/samples/slot-non-identifier/input.svelte @@ -14,6 +14,12 @@ + +
+ reserved keyword +
+
+
cool @@ -63,4 +69,4 @@ cool - \ No newline at end of file + diff --git a/packages/svelte/tests/migrate/samples/slot-non-identifier/output.svelte b/packages/svelte/tests/migrate/samples/slot-non-identifier/output.svelte index 85913264b4..fb262e8c25 100644 --- a/packages/svelte/tests/migrate/samples/slot-non-identifier/output.svelte +++ b/packages/svelte/tests/migrate/samples/slot-non-identifier/output.svelte @@ -16,6 +16,13 @@
+ + +
+ reserved keyword +
+
+ {#snippet stuff()}
@@ -75,4 +82,4 @@ cool - \ No newline at end of file +