diff --git a/.changeset/wet-pears-remain.md b/.changeset/wet-pears-remain.md new file mode 100644 index 000000000000..48a69d89b1e0 --- /dev/null +++ b/.changeset/wet-pears-remain.md @@ -0,0 +1,5 @@ +--- +"svelte": patch +--- + +fix: skip parent element validation for snippet contents diff --git a/packages/svelte/src/compiler/phases/2-analyze/validation.js b/packages/svelte/src/compiler/phases/2-analyze/validation.js index c2c7dece3147..00985e838121 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/validation.js +++ b/packages/svelte/src/compiler/phases/2-analyze/validation.js @@ -622,6 +622,8 @@ const validation = { SnippetBlock(node, context) { validate_block_not_empty(node.body, context); + context.next({ ...context.state, parent_element: null }); + if (node.expression.name !== 'children') return; const { path } = context; diff --git a/packages/svelte/tests/validator/samples/non-invalid-node-placement-if-snippet/errors.json b/packages/svelte/tests/validator/samples/non-invalid-node-placement-if-snippet/errors.json new file mode 100644 index 000000000000..fe51488c7066 --- /dev/null +++ b/packages/svelte/tests/validator/samples/non-invalid-node-placement-if-snippet/errors.json @@ -0,0 +1 @@ +[] diff --git a/packages/svelte/tests/validator/samples/non-invalid-node-placement-if-snippet/input.svelte b/packages/svelte/tests/validator/samples/non-invalid-node-placement-if-snippet/input.svelte new file mode 100644 index 000000000000..1e315eb0383a --- /dev/null +++ b/packages/svelte/tests/validator/samples/non-invalid-node-placement-if-snippet/input.svelte @@ -0,0 +1,10 @@ + + + + {#snippet cell(v)}Value: {v}{/snippet} + {#each [1, 2, 3] as v} + + {/each} + + +
{@render cell(v)}
\ No newline at end of file