From 76d05e065cc1cc9534dc53cc704d4b8d02511408 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Wed, 21 May 2025 13:13:34 -0400 Subject: [PATCH] make process_children unaware of templating mode - the less visitors know about this, the better --- .../3-transform/client/transform-template/to-functions.js | 7 +++---- .../3-transform/client/transform-template/to-string.js | 2 +- .../src/compiler/phases/3-transform/client/types.d.ts | 2 +- .../phases/3-transform/client/visitors/shared/fragment.js | 8 ++------ 4 files changed, 7 insertions(+), 12 deletions(-) diff --git a/packages/svelte/src/compiler/phases/3-transform/client/transform-template/to-functions.js b/packages/svelte/src/compiler/phases/3-transform/client/transform-template/to-functions.js index 3b330e9e27..f89e82e11b 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/transform-template/to-functions.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/transform-template/to-functions.js @@ -28,7 +28,6 @@ export function template_to_functions(items) { } for (let instruction of items) { - const args = instruction.args ?? []; const last_element_stack = /** @type {Element} */ (elements_stack.at(-1)); /** * @param {Expression | null | void} value @@ -56,7 +55,7 @@ export function template_to_functions(items) { push(last_current_element); break; case 'create_text': - push(create_text(last_element_stack, args[0])); + push(create_text(last_element_stack, instruction.nodes.map((node) => node.data).join(''))); break; case 'create_anchor': push(create_anchor(last_element_stack, instruction.data)); @@ -138,13 +137,13 @@ function create_text(element, value) { * * @param {Element} element * @param {string} prop - * @param {string} value + * @param {string | undefined} value */ function set_prop(element, prop, value) { const p = get_or_create_prop(element, 'p', b.object([])); if (prop === 'is') { - element.properties.push(b.prop('init', b.id(prop), b.literal(value))); + element.properties.push(b.prop('init', b.id(prop), b.literal(/** @type {string} */ (value)))); return; } diff --git a/packages/svelte/src/compiler/phases/3-transform/client/transform-template/to-string.js b/packages/svelte/src/compiler/phases/3-transform/client/transform-template/to-string.js index 627e3e1b96..80c9770378 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/transform-template/to-string.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/transform-template/to-string.js @@ -55,7 +55,7 @@ export function template_to_string(items) { case 'create_text': insert({ kind: 'text', - value: instruction.args[0] + value: instruction.nodes.map((node) => node.raw).join('') }); break; case 'create_anchor': diff --git a/packages/svelte/src/compiler/phases/3-transform/client/types.d.ts b/packages/svelte/src/compiler/phases/3-transform/client/types.d.ts index 39d0ac3eeb..06db1b381a 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/types.d.ts +++ b/packages/svelte/src/compiler/phases/3-transform/client/types.d.ts @@ -43,7 +43,7 @@ type TemplateOperations = Array< } | { kind: 'create_text'; - args: string[]; + nodes: AST.Text[]; } | { kind: 'create_anchor'; diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/fragment.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/fragment.js index 6746dad31a..519cc062bb 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/fragment.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/fragment.js @@ -66,17 +66,13 @@ export function process_children(nodes, initial, is_element, { visit, state }) { skipped += 1; state.template.push({ kind: 'create_text', - args: [ - sequence - .map((node) => (state.is_functional_template_mode ? node.data : node.raw)) - .join('') - ] + nodes: sequence }); return; } state.template.push({ kind: 'create_text', - args: [' '] + nodes: [{ type: 'Text', data: ' ', raw: ' ', start: -1, end: -1 }] }); const { has_state, value } = build_template_chunk(sequence, visit, state);