From 6a063ec26ca0dc3867a226342f491c8be8354071 Mon Sep 17 00:00:00 2001 From: paoloricciuti Date: Tue, 14 Nov 2023 07:30:43 +0100 Subject: [PATCH] fix: allow svelte:self in snippets --- packages/svelte/src/compiler/errors.js | 2 +- packages/svelte/src/compiler/phases/1-parse/state/element.js | 3 ++- .../tests/compiler-errors/samples/self-reference/_config.js | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/svelte/src/compiler/errors.js b/packages/svelte/src/compiler/errors.js index 51e0644c4c..615123088f 100644 --- a/packages/svelte/src/compiler/errors.js +++ b/packages/svelte/src/compiler/errors.js @@ -141,7 +141,7 @@ const special_elements = { /** @param {string} name */ 'duplicate-svelte-element': (name) => `A component can only have one <${name}> element`, 'invalid-self-placement': () => - ` components can only exist inside {#if} blocks, {#each} blocks, or slots passed to components`, + ` components can only exist inside {#if} blocks, {#each} blocks, {#snippet} blocks or slots passed to components`, 'missing-svelte-element-definition': () => ` must have a 'this' attribute`, 'missing-svelte-component-definition': () => ` must have a 'this' attribute`, 'invalid-svelte-element-definition': () => `Invalid element definition — must be an {expression}`, diff --git a/packages/svelte/src/compiler/phases/1-parse/state/element.js b/packages/svelte/src/compiler/phases/1-parse/state/element.js index 8e69a92c6b..ab07df7e26 100644 --- a/packages/svelte/src/compiler/phases/1-parse/state/element.js +++ b/packages/svelte/src/compiler/phases/1-parse/state/element.js @@ -331,7 +331,8 @@ function read_tag_name(parser) { if ( fragment.type === 'IfBlock' || fragment.type === 'EachBlock' || - fragment.type === 'Component' + fragment.type === 'Component' || + fragment.type === 'SnippetBlock' ) { legal = true; break; diff --git a/packages/svelte/tests/compiler-errors/samples/self-reference/_config.js b/packages/svelte/tests/compiler-errors/samples/self-reference/_config.js index c1793c3043..5f5980b7ed 100644 --- a/packages/svelte/tests/compiler-errors/samples/self-reference/_config.js +++ b/packages/svelte/tests/compiler-errors/samples/self-reference/_config.js @@ -4,7 +4,7 @@ export default test({ error: { code: 'invalid-self-placement', message: - ' components can only exist inside {#if} blocks, {#each} blocks, or slots passed to components', + ' components can only exist inside {#if} blocks, {#each} blocks,, {#snippet} blocks or slots passed to components', position: [1, 1] } });