Skip to content

Commit e3e7e77

Browse files
fix(migration): named slots with reserved keywords
1 parent 36ece1c commit e3e7e77

File tree

3 files changed

+17
-4
lines changed

3 files changed

+17
-4
lines changed

packages/svelte/src/compiler/migrate/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import {
1717
} from '../utils/ast.js';
1818
import { migrate_svelte_ignore } from '../utils/extract_svelte_ignore.js';
1919
import { validate_component_options } from '../validate-options.js';
20-
import { is_svg, is_void } from '../../utils.js';
20+
import { is_reserved, is_svg, is_void } from '../../utils.js';
2121
import { regex_is_valid_identifier } from '../phases/patterns.js';
2222

2323
const regex_style_tags = /(<style[^>]+>)([\S\s]*?)(<\/style>)/g;
@@ -1440,7 +1440,7 @@ function migrate_slot_usage(node, path, state) {
14401440
if (snippet_name === 'default') {
14411441
snippet_name = 'children';
14421442
}
1443-
if (!regex_is_valid_identifier.test(snippet_name)) {
1443+
if (!regex_is_valid_identifier.test(snippet_name) || is_reserved(snippet_name)) {
14441444
has_migration_task = true;
14451445
state.str.appendLeft(
14461446
node.start,

packages/svelte/tests/migrate/samples/slot-non-identifier/input.svelte

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@
1414
</div>
1515
</Comp>
1616

17+
<Comp>
18+
<div slot="new">
19+
reserved keyword
20+
</div>
21+
</Comp>
22+
1723
<Comp>
1824
<div slot="stuff">
1925
cool
@@ -63,4 +69,4 @@
6369
<svelte:fragment let:should_stay slot="cool stuff">
6470
cool
6571
</svelte:fragment>
66-
</Comp>
72+
</Comp>

packages/svelte/tests/migrate/samples/slot-non-identifier/output.svelte

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,13 @@
1616
</div>
1717
</Comp>
1818

19+
<Comp>
20+
<!-- @migration-task: migrate this slot by hand, `new` is an invalid identifier -->
21+
<div slot="new">
22+
reserved keyword
23+
</div>
24+
</Comp>
25+
1926
<Comp>
2027
{#snippet stuff()}
2128
<div >
@@ -75,4 +82,4 @@
7582
<svelte:fragment let:should_stay slot="cool stuff">
7683
cool
7784
</svelte:fragment>
78-
</Comp>
85+
</Comp>

0 commit comments

Comments
 (0)