diff --git a/packages/svelte/src/compiler/phases/2-analyze/index.js b/packages/svelte/src/compiler/phases/2-analyze/index.js index a9451135ca..e303a16348 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/index.js +++ b/packages/svelte/src/compiler/phases/2-analyze/index.js @@ -543,7 +543,6 @@ export function analyze_component(root, source, options) { snippet_renderers: new Map(), snippets: new Set(), async_deriveds: new Set(), - suspends_without_fallback: false, hoisted_promises: new Map() }; diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/AwaitExpression.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/AwaitExpression.js index 14b43dd0fa..f32aede4d2 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/AwaitExpression.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/AwaitExpression.js @@ -42,8 +42,6 @@ export function AwaitExpression(node, context) { if (!context.state.analysis.runes) { e.legacy_await_invalid(node); } - - context.state.analysis.suspends_without_fallback ||= context.state.ast_type === 'instance'; } context.next(); diff --git a/packages/svelte/src/compiler/phases/3-transform/server/transform-server.js b/packages/svelte/src/compiler/phases/3-transform/server/transform-server.js index 287ffd1a2e..6dc469cc9a 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/transform-server.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/transform-server.js @@ -243,8 +243,7 @@ export function server_component(analysis, options) { .../** @type {Statement[]} */ (template.body) ]); - // TODO 'suspends_without_fallback' is probably a misnomer now - if (analysis.suspends_without_fallback) { + if (analysis.instance.has_await) { component_block = b.block([call_child_payload(component_block, true)]); } diff --git a/packages/svelte/src/compiler/phases/3-transform/server/visitors/SvelteHead.js b/packages/svelte/src/compiler/phases/3-transform/server/visitors/SvelteHead.js index 5ef6e71989..aa401e4555 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/visitors/SvelteHead.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/visitors/SvelteHead.js @@ -15,9 +15,7 @@ export function SvelteHead(node, context) { b.call( '$.head', b.id('$$payload'), - // same thing as elsewhere; this will create more async functions than necessary but should never be _wrong_ - // because the component rendering this head block will always be async if the head block is async - b.arrow([b.id('$$payload')], block, context.state.analysis.suspends_without_fallback) + b.arrow([b.id('$$payload')], block, node.fragment.metadata.is_sync) ) ) ); diff --git a/packages/svelte/src/compiler/phases/types.d.ts b/packages/svelte/src/compiler/phases/types.d.ts index ffee91f646..1f6ceda35e 100644 --- a/packages/svelte/src/compiler/phases/types.d.ts +++ b/packages/svelte/src/compiler/phases/types.d.ts @@ -107,8 +107,6 @@ export interface ComponentAnalysis extends Analysis { * Every snippet that is declared locally */ snippets: Set; - /** Whether the component uses `await` in a context that causes suspense outside of any boundary with a pending snippet. */ - suspends_without_fallback: boolean; hoisted_promises: Map; }