File tree Expand file tree Collapse file tree 4 files changed +47
-1
lines changed
tests/migrate/samples/shadowed-forwarded-slot Expand file tree Collapse file tree 4 files changed +47
-1
lines changed Original file line number Diff line number Diff line change 1+ ---
2+ ' svelte ' : patch
3+ ---
4+
5+ fix: account for shadowing children slot during migration
Original file line number Diff line number Diff line change @@ -1292,6 +1292,21 @@ const template = {
12921292 existing_prop . needs_refine_type = false ;
12931293 }
12941294
1295+ if (
1296+ slot_name === 'default' &&
1297+ path . some (
1298+ ( parent ) =>
1299+ ( parent . type === 'SvelteComponent' ||
1300+ parent . type === 'Component' ||
1301+ parent . type === 'RegularElement' ||
1302+ parent . type === 'SvelteElement' ||
1303+ parent . type === 'SvelteFragment' ) &&
1304+ parent . attributes . some ( ( attr ) => ( attr . type = 'LetDirective' ) )
1305+ )
1306+ ) {
1307+ aliased_slot_name = `${ name } _render` ;
1308+ state . derived_conflicting_slots . set ( aliased_slot_name , name ) ;
1309+ }
12951310 name = aliased_slot_name ?? name ;
12961311
12971312 if ( node . fragment . nodes . length > 0 ) {
Original file line number Diff line number Diff line change 1212 </div >
1313 </MyComponent >
1414 </div >
15+ </MyInput >
16+
17+ <MyInput let:args >
18+ <slot />
19+ </MyInput >
20+
21+ <MyInput >
22+ <div let:args >
23+ <slot />
24+ </div >
1525</MyInput >
Original file line number Diff line number Diff line change 22 /**
33 * @typedef {Object} Props
44 * @property {import('svelte').Snippet} [label]
5+ * @property {import('svelte').Snippet} [children]
56 */
67
78 /** @type {Props} */
8- let { label } = $props ();
9+ let { label, children } = $props ();
910 const label_render = $derived (label);
11+ const children_render = $derived (children);
1012
1113 </script >
1214
3032 </MyComponent >
3133 </div >
3234 {/ snippet }
35+ </MyInput >
36+
37+ <MyInput >
38+ {#snippet children ({ args })}
39+ {@render children_render ?.()}
40+ {/ snippet }
41+ </MyInput >
42+
43+ <MyInput >
44+ <div >
45+ {#snippet children ({ args })}
46+ {@render children_render ?.()}
47+ {/ snippet }
48+ </div >
3349</MyInput >
You can’t perform that action at this time.
0 commit comments