From ef13cda2ca12ac7e1148d0199264d43ec75062e9 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Thu, 23 Jan 2025 14:23:28 -0500 Subject: [PATCH] cut out the middleman --- .../client/visitors/AwaitExpression.js | 7 ++----- .../client/visitors/VariableDeclaration.js | 15 ++++++--------- .../src/internal/client/dom/blocks/boundary.js | 10 ++++------ 3 files changed, 12 insertions(+), 20 deletions(-) diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/AwaitExpression.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/AwaitExpression.js index 1341d13ff4..3c724174bb 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/AwaitExpression.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/AwaitExpression.js @@ -14,11 +14,8 @@ export function AwaitExpression(node, context) { } return b.call( - b.member( - b.await( - b.call('$.save', node.argument && /** @type {Expression} */ (context.visit(node.argument))) - ), - 'restore' + b.await( + b.call('$.save', node.argument && /** @type {Expression} */ (context.visit(node.argument))) ) ); } diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/VariableDeclaration.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/VariableDeclaration.js index 9ea5d5be16..bba554c12a 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/VariableDeclaration.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/VariableDeclaration.js @@ -168,17 +168,14 @@ export function VariableDeclaration(node, context) { b.declarator( declarator.id, b.call( - b.member( - b.await( + b.await( + b.call( + '$.save', b.call( - '$.save', - b.call( - '$.async_derived', - rune === '$derived.by' ? value : b.thunk(value, true) - ) + '$.async_derived', + rune === '$derived.by' ? value : b.thunk(value, true) ) - ), - 'restore' + ) ) ) ) diff --git a/packages/svelte/src/internal/client/dom/blocks/boundary.js b/packages/svelte/src/internal/client/dom/blocks/boundary.js index 60df9a119d..0d4a442dbd 100644 --- a/packages/svelte/src/internal/client/dom/blocks/boundary.js +++ b/packages/svelte/src/internal/client/dom/blocks/boundary.js @@ -295,17 +295,15 @@ export function suspend() { /** * @template T * @param {Promise} promise - * @returns {Promise<{ restore: () => T }>} + * @returns {Promise<() => T>} */ export async function save(promise) { var restore = capture(); var value = await promise; - return { - restore() { - restore(); - return value; - } + return () => { + restore(); + return value; }; }