From a5275b2405268b6225b222a849eccfedbc9065ae Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Wed, 26 Feb 2025 11:52:34 -0500 Subject: [PATCH] update test, remove unnecessary suspend --- .../src/internal/client/reactivity/effects.js | 3 -- .../samples/async-error/_config.js | 44 +++++++++---------- .../samples/async-error/main.svelte | 8 +++- 3 files changed, 26 insertions(+), 29 deletions(-) diff --git a/packages/svelte/src/internal/client/reactivity/effects.js b/packages/svelte/src/internal/client/reactivity/effects.js index 3614acd874..0a66d76466 100644 --- a/packages/svelte/src/internal/client/reactivity/effects.js +++ b/packages/svelte/src/internal/client/reactivity/effects.js @@ -342,7 +342,6 @@ export function template_effect(fn, sync = [], async = [], d = derived) { if (async.length > 0) { var restore = capture(); - var unsuspend = suspend(); Promise.all(async.map((expression) => async_derived(expression))).then((result) => { restore(); @@ -352,8 +351,6 @@ export function template_effect(fn, sync = [], async = [], d = derived) { } create_template_effect(fn, [...sync.map(d), ...result]); - - unsuspend(); }); } else { create_template_effect(fn, sync.map(d)); diff --git a/packages/svelte/tests/runtime-runes/samples/async-error/_config.js b/packages/svelte/tests/runtime-runes/samples/async-error/_config.js index 9c7e296287..87e7764b3b 100644 --- a/packages/svelte/tests/runtime-runes/samples/async-error/_config.js +++ b/packages/svelte/tests/runtime-runes/samples/async-error/_config.js @@ -1,37 +1,33 @@ import { flushSync, tick } from 'svelte'; -import { deferred } from '../../../../src/internal/shared/utils.js'; import { test } from '../../test'; -/** @type {ReturnType} */ -let d; - export default test({ - html: `

pending

`, - - get props() { - d = deferred(); + html: `

pending

`, - return { - promise: d.promise - }; - }, + async test({ assert, target }) { + let [button1, button2, button3] = target.querySelectorAll('button'); - async test({ assert, target, component }) { - d.reject(new Error('oops!')); + flushSync(() => button1.click()); await Promise.resolve(); await Promise.resolve(); flushSync(); - assert.htmlEqual(target.innerHTML, '

oops!

'); - - const button = target.querySelector('button'); - - component.promise = (d = deferred()).promise; - flushSync(() => button?.click()); - assert.htmlEqual(target.innerHTML, '

pending

'); - - d.resolve('wheee'); + assert.htmlEqual( + target.innerHTML, + '

oops!

' + ); + + flushSync(() => button2.click()); + assert.htmlEqual( + target.innerHTML, + '

pending

' + ); + + flushSync(() => button3.click()); await Promise.resolve(); await tick(); - assert.htmlEqual(target.innerHTML, '

wheee

'); + assert.htmlEqual( + target.innerHTML, + '

wheee

' + ); } }); diff --git a/packages/svelte/tests/runtime-runes/samples/async-error/main.svelte b/packages/svelte/tests/runtime-runes/samples/async-error/main.svelte index dd42fa7596..547255c4c4 100644 --- a/packages/svelte/tests/runtime-runes/samples/async-error/main.svelte +++ b/packages/svelte/tests/runtime-runes/samples/async-error/main.svelte @@ -1,9 +1,13 @@ + + + + -

{await promise}

+

{await deferred.promise}

{#snippet pending()}

pending