From 719860a27c3d6e9813269c65dd8835fc4bfd5b89 Mon Sep 17 00:00:00 2001 From: ComputerGuy <63362464+Ocean-OS@users.noreply.github.com> Date: Mon, 28 Jul 2025 11:42:13 -0700 Subject: [PATCH] convert `TemplateComment` back to `Comment` --- packages/svelte/src/compiler/legacy.js | 2 +- packages/svelte/src/compiler/migrate/index.js | 2 +- .../src/compiler/phases/1-parse/state/element.js | 6 +++--- .../svelte/src/compiler/phases/2-analyze/index.js | 4 ++-- .../phases/2-analyze/visitors/SnippetBlock.js | 2 +- .../src/compiler/phases/2-analyze/visitors/Text.js | 2 +- .../phases/2-analyze/visitors/shared/a11y/index.js | 2 +- .../phases/2-analyze/visitors/shared/component.js | 4 ++-- .../phases/2-analyze/visitors/shared/element.js | 2 +- .../phases/3-transform/client/transform-client.js | 4 ++-- .../visitors/{TemplateComment.js => Comment.js} | 4 ++-- .../3-transform/server/visitors/shared/utils.js | 8 ++++---- .../svelte/src/compiler/phases/3-transform/utils.js | 4 ++-- packages/svelte/src/compiler/types/css.d.ts | 2 +- packages/svelte/src/compiler/types/legacy-nodes.d.ts | 2 +- packages/svelte/src/compiler/types/template.d.ts | 9 +++++---- .../samples/comment-with-ignores/output.json | 2 +- .../tests/parser-legacy/samples/comment/output.json | 2 +- .../samples/dynamic-element-string/output.json | 4 ++-- .../samples/comment-before-script/output.json | 2 +- packages/svelte/types/index.d.ts | 11 ++++++----- 21 files changed, 41 insertions(+), 39 deletions(-) rename packages/svelte/src/compiler/phases/3-transform/client/visitors/{TemplateComment.js => Comment.js} (77%) diff --git a/packages/svelte/src/compiler/legacy.js b/packages/svelte/src/compiler/legacy.js index 817ade97f7..85345bca4a 100644 --- a/packages/svelte/src/compiler/legacy.js +++ b/packages/svelte/src/compiler/legacy.js @@ -190,7 +190,7 @@ export function convert(source, ast) { ClassDirective(node) { return { ...node, type: 'Class' }; }, - TemplateComment(node) { + Comment(node) { return { ...node, ignores: extract_svelte_ignore(node.start, node.data, false) diff --git a/packages/svelte/src/compiler/migrate/index.js b/packages/svelte/src/compiler/migrate/index.js index eeda67f29c..eb0e4eff8c 100644 --- a/packages/svelte/src/compiler/migrate/index.js +++ b/packages/svelte/src/compiler/migrate/index.js @@ -1362,7 +1362,7 @@ const template = { ); } }, - TemplateComment(node, { state }) { + Comment(node, { state }) { const migrated = migrate_svelte_ignore(node.data); if (migrated !== node.data) { state.str.overwrite(node.start + ''.length, migrated); 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 97c0da7e79..87332f647d 100644 --- a/packages/svelte/src/compiler/phases/1-parse/state/element.js +++ b/packages/svelte/src/compiler/phases/1-parse/state/element.js @@ -59,7 +59,7 @@ export default function element(parser) { parser.eat('-->', true); parser.append({ - type: 'TemplateComment', + type: 'Comment', start, end: parser.index, data @@ -302,7 +302,7 @@ export default function element(parser) { if (is_top_level_script_or_style) { parser.eat('>', true); - /** @type {AST.TemplateComment | null} */ + /** @type {AST.Comment | null} */ let prev_comment = null; for (let i = current.fragment.nodes.length - 1; i >= 0; i--) { const node = current.fragment.nodes[i]; @@ -311,7 +311,7 @@ export default function element(parser) { break; } - if (node.type === 'TemplateComment') { + if (node.type === 'Comment') { prev_comment = node; break; } else if (node.type !== 'Text' || node.data.trim()) { diff --git a/packages/svelte/src/compiler/phases/2-analyze/index.js b/packages/svelte/src/compiler/phases/2-analyze/index.js index 58ba7aed93..cd44fd998a 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/index.js +++ b/packages/svelte/src/compiler/phases/2-analyze/index.js @@ -89,13 +89,13 @@ const visitors = { /** @type {string[]} */ const ignores = []; - if (parent?.type === 'Fragment' && node.type !== 'TemplateComment' && node.type !== 'Text') { + if (parent?.type === 'Fragment' && node.type !== 'Comment' && node.type !== 'Text') { const idx = parent.nodes.indexOf(/** @type {any} */ (node)); for (let i = idx - 1; i >= 0; i--) { const prev = parent.nodes[i]; - if (prev.type === 'TemplateComment') { + if (prev.type === 'Comment') { ignores.push( ...extract_svelte_ignore( prev.start + 4 /* '` : escape_html(node.data); + node.type === 'Comment' ? `` : escape_html(node.data); } else { const evaluated = state.scope.evaluate(node.expression); @@ -68,7 +68,7 @@ export function process_children(nodes, { visit, state }) { for (let i = 0; i < nodes.length; i += 1) { const node = nodes[i]; - if (node.type === 'Text' || node.type === 'TemplateComment' || node.type === 'ExpressionTag') { + if (node.type === 'Text' || node.type === 'Comment' || node.type === 'ExpressionTag') { sequence.push(node); } else { if (sequence.length > 0) { diff --git a/packages/svelte/src/compiler/phases/3-transform/utils.js b/packages/svelte/src/compiler/phases/3-transform/utils.js index 29f8c08473..1445ce3aa6 100644 --- a/packages/svelte/src/compiler/phases/3-transform/utils.js +++ b/packages/svelte/src/compiler/phases/3-transform/utils.js @@ -165,7 +165,7 @@ export function clean_nodes( const regular = []; for (const node of nodes) { - if (node.type === 'TemplateComment' && !preserve_comments) { + if (node.type === 'Comment' && !preserve_comments) { continue; } @@ -285,7 +285,7 @@ export function clean_nodes( // and would still call node.replaceWith() on the script tag, it would be a no-op because the script tag has no parent. if (trimmed.length === 1 && first.type === 'RegularElement' && first.name === 'script') { trimmed.push({ - type: 'TemplateComment', + type: 'Comment', data: '', start: -1, end: -1 diff --git a/packages/svelte/src/compiler/types/css.d.ts b/packages/svelte/src/compiler/types/css.d.ts index da15731f4a..154a06ffb1 100644 --- a/packages/svelte/src/compiler/types/css.d.ts +++ b/packages/svelte/src/compiler/types/css.d.ts @@ -15,7 +15,7 @@ export namespace _CSS { end: number; styles: string; /** Possible comment atop the style tag */ - comment: AST.TemplateComment | null; + comment: AST.Comment | null; }; } diff --git a/packages/svelte/src/compiler/types/legacy-nodes.d.ts b/packages/svelte/src/compiler/types/legacy-nodes.d.ts index 6db84840b6..389fc92332 100644 --- a/packages/svelte/src/compiler/types/legacy-nodes.d.ts +++ b/packages/svelte/src/compiler/types/legacy-nodes.d.ts @@ -210,7 +210,7 @@ export interface LegacyWindow extends BaseElement { } export interface LegacyComment extends BaseNode { - type: 'TemplateComment'; + type: 'Comment'; /** the contents of the comment */ data: string; /** any svelte-ignore directives — would result in ['a', 'b', 'c'] */ diff --git a/packages/svelte/src/compiler/types/template.d.ts b/packages/svelte/src/compiler/types/template.d.ts index 47c0fba195..058a1a8e66 100644 --- a/packages/svelte/src/compiler/types/template.d.ts +++ b/packages/svelte/src/compiler/types/template.d.ts @@ -43,7 +43,7 @@ export namespace AST { export interface Fragment { type: 'Fragment'; - nodes: Array; + nodes: Array; /** @internal */ metadata: { /** @@ -144,8 +144,9 @@ export namespace AST { } /** An HTML comment */ - export interface TemplateComment extends BaseNode { - type: 'TemplateComment'; + // TODO rename to disambiguate + export interface Comment extends BaseNode { + type: 'Comment'; /** the contents of the comment */ data: string; } @@ -613,7 +614,7 @@ export namespace AST { | AST.SpreadAttribute | Directive | AST.AttachTag - | AST.TemplateComment + | AST.Comment | Block; export type SvelteNode = Node | TemplateNode | AST.Fragment | _CSS.Node | Script; diff --git a/packages/svelte/tests/parser-legacy/samples/comment-with-ignores/output.json b/packages/svelte/tests/parser-legacy/samples/comment-with-ignores/output.json index 8b067e5e13..cf2dc9f752 100644 --- a/packages/svelte/tests/parser-legacy/samples/comment-with-ignores/output.json +++ b/packages/svelte/tests/parser-legacy/samples/comment-with-ignores/output.json @@ -5,7 +5,7 @@ "end": 31, "children": [ { - "type": "TemplateComment", + "type": "Comment", "start": 0, "end": 31, "data": " svelte-ignore foo, bar ", diff --git a/packages/svelte/tests/parser-legacy/samples/comment/output.json b/packages/svelte/tests/parser-legacy/samples/comment/output.json index ce455d5441..6017db404c 100644 --- a/packages/svelte/tests/parser-legacy/samples/comment/output.json +++ b/packages/svelte/tests/parser-legacy/samples/comment/output.json @@ -5,7 +5,7 @@ "end": 18, "children": [ { - "type": "TemplateComment", + "type": "Comment", "start": 0, "end": 18, "data": " a comment ", diff --git a/packages/svelte/tests/parser-legacy/samples/dynamic-element-string/output.json b/packages/svelte/tests/parser-legacy/samples/dynamic-element-string/output.json index 9167aba265..9ba15d6044 100644 --- a/packages/svelte/tests/parser-legacy/samples/dynamic-element-string/output.json +++ b/packages/svelte/tests/parser-legacy/samples/dynamic-element-string/output.json @@ -21,7 +21,7 @@ "data": "\n" }, { - "type": "TemplateComment", + "type": "Comment", "start": 45, "end": 69, "data": " prettier-ignore ", @@ -83,7 +83,7 @@ "data": "\n" }, { - "type": "TemplateComment", + "type": "Comment", "start": 162, "end": 186, "data": " prettier-ignore ", diff --git a/packages/svelte/tests/parser-modern/samples/comment-before-script/output.json b/packages/svelte/tests/parser-modern/samples/comment-before-script/output.json index c897a268ab..1aca0ce036 100644 --- a/packages/svelte/tests/parser-modern/samples/comment-before-script/output.json +++ b/packages/svelte/tests/parser-modern/samples/comment-before-script/output.json @@ -8,7 +8,7 @@ "type": "Fragment", "nodes": [ { - "type": "TemplateComment", + "type": "Comment", "start": 0, "end": 27, "data": "should not error out" diff --git a/packages/svelte/types/index.d.ts b/packages/svelte/types/index.d.ts index 5a606f8147..64aa9e23ba 100644 --- a/packages/svelte/types/index.d.ts +++ b/packages/svelte/types/index.d.ts @@ -1145,7 +1145,7 @@ declare module 'svelte/compiler' { export interface Fragment { type: 'Fragment'; - nodes: Array; + nodes: Array; } export interface Root extends BaseNode { @@ -1220,8 +1220,9 @@ declare module 'svelte/compiler' { } /** An HTML comment */ - export interface TemplateComment extends BaseNode { - type: 'TemplateComment'; + // TODO rename to disambiguate + export interface Comment extends BaseNode { + type: 'Comment'; /** the contents of the comment */ data: string; } @@ -1553,7 +1554,7 @@ declare module 'svelte/compiler' { | AST.SpreadAttribute | Directive | AST.AttachTag - | AST.TemplateComment + | AST.Comment | Block; export type SvelteNode = Node | TemplateNode | AST.Fragment | _CSS.Node | Script; @@ -1608,7 +1609,7 @@ declare module 'svelte/compiler' { end: number; styles: string; /** Possible comment atop the style tag */ - comment: AST.TemplateComment | null; + comment: AST.Comment | null; }; }