From 90ba82114b7f8243405efffde4eadd64a5aed772 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Wed, 22 Nov 2023 17:39:41 -0500 Subject: [PATCH] bit more golfing --- .../3-transform/client/visitors/template.js | 20 ++++++++++--------- packages/svelte/src/internal/client/render.js | 4 ++-- .../_expected/client/index.svelte.js | 5 ++--- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/template.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/template.js index 74c023ff22..0d1507fa58 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/template.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/template.js @@ -1037,15 +1037,17 @@ function create_block(parent, name, nodes, context) { const template = state.template[0]; if (state.template.length === 1 && (template === ' ' || template === '')) { - const callee = b.id(template === ' ' ? '$.space' : '$.comment'); - - body.push( - b.var(id, b.call(callee, b.id('$$anchor'))), - b.var(node_id, b.call('$.child_frag', id)), - ...state.init - ); - - close = b.stmt(b.call('$.close_frag', b.id('$$anchor'), id)); + if (template === ' ') { + body.push(b.var(node_id, b.call('$.space', b.id('$$anchor'))), ...state.init); + close = b.stmt(b.call('$.close', b.id('$$anchor'), node_id)); + } else { + body.push( + b.var(id, b.call('$.comment', b.id('$$anchor'))), + b.var(node_id, b.call('$.child_frag', id)), + ...state.init + ); + close = b.stmt(b.call('$.close_frag', b.id('$$anchor'), id)); + } } else { const callee = namespace === 'svg' ? '$.svg_template' : '$.template'; diff --git a/packages/svelte/src/internal/client/render.js b/packages/svelte/src/internal/client/render.js index 6fe7306f24..f32e83ed1d 100644 --- a/packages/svelte/src/internal/client/render.js +++ b/packages/svelte/src/internal/client/render.js @@ -176,7 +176,7 @@ export function open_frag(anchor, use_clone_node, template_element_fn) { return open_template(true, use_clone_node, anchor, template_element_fn); } -const space_template = template(' ', true); +const space_template = template(' ', false); const comment_template = template('', true); /** @@ -184,7 +184,7 @@ const comment_template = template('', true); */ /*#__NO_SIDE_EFFECTS__*/ export function space(anchor) { - return open_frag(anchor, true, space_template); + return open(anchor, true, space_template); } /** diff --git a/packages/svelte/tests/snapshot/samples/function-prop-no-getter/_expected/client/index.svelte.js b/packages/svelte/tests/snapshot/samples/function-prop-no-getter/_expected/client/index.svelte.js index 8fd3be7b08..fb455beeff 100644 --- a/packages/svelte/tests/snapshot/samples/function-prop-no-getter/_expected/client/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/function-prop-no-getter/_expected/client/index.svelte.js @@ -21,12 +21,11 @@ export default function Function_prop_no_getter($$anchor, $$props) { onmouseup, children: ($$anchor, $$slotProps) => { /* Init */ - var fragment_1 = $.space($$anchor); - var node_1 = $.child_frag(fragment_1); + var node_1 = $.space($$anchor); /* Update */ $.text_effect(node_1, () => `clicks: ${$.stringify($.get(count))}`); - $.close_frag($$anchor, fragment_1); + $.close($$anchor, node_1); } });