Skip to content

Commit e90ded6

Browse files
fix: allow svelte:self in snippets (#9439)
* fix: allow svelte:self in snippets * Create funny-wombats-argue.md
1 parent 73ae5ef commit e90ded6

File tree

4 files changed

+9
-3
lines changed

4 files changed

+9
-3
lines changed

.changeset/funny-wombats-argue.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"svelte": patch
3+
---
4+
5+
fix: allow svelte:self in snippets

packages/svelte/src/compiler/errors.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ const special_elements = {
141141
/** @param {string} name */
142142
'duplicate-svelte-element': (name) => `A component can only have one <${name}> element`,
143143
'invalid-self-placement': () =>
144-
`<svelte:self> components can only exist inside {#if} blocks, {#each} blocks, or slots passed to components`,
144+
`<svelte:self> components can only exist inside {#if} blocks, {#each} blocks, {#snippet} blocks or slots passed to components`,
145145
'missing-svelte-element-definition': () => `<svelte:element> must have a 'this' attribute`,
146146
'missing-svelte-component-definition': () => `<svelte:component> must have a 'this' attribute`,
147147
'invalid-svelte-element-definition': () => `Invalid element definition — must be an {expression}`,

packages/svelte/src/compiler/phases/1-parse/state/element.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,8 @@ function read_tag_name(parser) {
333333
if (
334334
fragment.type === 'IfBlock' ||
335335
fragment.type === 'EachBlock' ||
336-
fragment.type === 'Component'
336+
fragment.type === 'Component' ||
337+
fragment.type === 'SnippetBlock'
337338
) {
338339
legal = true;
339340
break;

packages/svelte/tests/compiler-errors/samples/self-reference/_config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ export default test({
44
error: {
55
code: 'invalid-self-placement',
66
message:
7-
'<svelte:self> components can only exist inside {#if} blocks, {#each} blocks, or slots passed to components',
7+
'<svelte:self> components can only exist inside {#if} blocks, {#each} blocks,, {#snippet} blocks or slots passed to components',
88
position: [1, 1]
99
}
1010
});

0 commit comments

Comments
 (0)