From bec7ca79186cbdbc40b6992b5a6188ad46a3a577 Mon Sep 17 00:00:00 2001 From: ComputerGuy <63362464+Ocean-OS@users.noreply.github.com> Date: Wed, 26 Nov 2025 13:25:43 -0800 Subject: [PATCH] fix: throw on invalid `{@tag}`s (#17256) * fix: throw on invalid `{@tag}`s * fix --- .changeset/six-lemons-yell.md | 5 +++++ .../docs/98-reference/.generated/compile-errors.md | 6 ++++++ packages/svelte/messages/compile-errors/template.md | 4 ++++ packages/svelte/src/compiler/errors.js | 9 +++++++++ packages/svelte/src/compiler/phases/1-parse/state/tag.js | 3 +++ 5 files changed, 27 insertions(+) create mode 100644 .changeset/six-lemons-yell.md diff --git a/.changeset/six-lemons-yell.md b/.changeset/six-lemons-yell.md new file mode 100644 index 0000000000..3931644648 --- /dev/null +++ b/.changeset/six-lemons-yell.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: throw on invalid `{@tag}`s diff --git a/documentation/docs/98-reference/.generated/compile-errors.md b/documentation/docs/98-reference/.generated/compile-errors.md index 94ea46b68a..8a8a10c80b 100644 --- a/documentation/docs/98-reference/.generated/compile-errors.md +++ b/documentation/docs/98-reference/.generated/compile-errors.md @@ -525,6 +525,12 @@ Expected an identifier Expected identifier or destructure pattern ``` +### expected_tag + +``` +Expected 'html', 'render', 'attach', 'const', or 'debug' +``` + ### expected_token ``` diff --git a/packages/svelte/messages/compile-errors/template.md b/packages/svelte/messages/compile-errors/template.md index dcec3867ef..db23a2eaa8 100644 --- a/packages/svelte/messages/compile-errors/template.md +++ b/packages/svelte/messages/compile-errors/template.md @@ -223,6 +223,10 @@ The same applies to components: > Expected identifier or destructure pattern +## expected_tag + +> Expected 'html', 'render', 'attach', 'const', or 'debug' + ## expected_token > Expected token %token% diff --git a/packages/svelte/src/compiler/errors.js b/packages/svelte/src/compiler/errors.js index 25304e48c8..d6c2efdfdc 100644 --- a/packages/svelte/src/compiler/errors.js +++ b/packages/svelte/src/compiler/errors.js @@ -1129,6 +1129,15 @@ export function expected_pattern(node) { e(node, 'expected_pattern', `Expected identifier or destructure pattern\nhttps://svelte.dev/e/expected_pattern`); } +/** + * Expected 'html', 'render', 'attach', 'const', or 'debug' + * @param {null | number | NodeLike} node + * @returns {never} + */ +export function expected_tag(node) { + e(node, 'expected_tag', `Expected 'html', 'render', 'attach', 'const', or 'debug'\nhttps://svelte.dev/e/expected_tag`); +} + /** * Expected token %token% * @param {null | number | NodeLike} node diff --git a/packages/svelte/src/compiler/phases/1-parse/state/tag.js b/packages/svelte/src/compiler/phases/1-parse/state/tag.js index 4ff948e165..e6e083c09d 100644 --- a/packages/svelte/src/compiler/phases/1-parse/state/tag.js +++ b/packages/svelte/src/compiler/phases/1-parse/state/tag.js @@ -724,6 +724,7 @@ function special(parser) { expression: new ExpressionMetadata() } }); + return; } if (parser.eat('render')) { @@ -755,5 +756,7 @@ function special(parser) { snippets: new Set() } }); + return; } + e.expected_tag(parser.index); }