From 9a273c6af2a9ad87a4f2f15d89af85703529bbd9 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Thu, 11 Sep 2025 22:14:25 -0400 Subject: [PATCH] remove async_hoist_boundary --- .../src/compiler/phases/2-analyze/index.js | 9 +++----- .../src/compiler/phases/2-analyze/types.d.ts | 8 ------- .../phases/2-analyze/visitors/AwaitBlock.js | 21 +++---------------- .../phases/2-analyze/visitors/EachBlock.js | 10 ++------- .../phases/2-analyze/visitors/IfBlock.js | 10 ++------- .../phases/2-analyze/visitors/KeyBlock.js | 6 +----- .../phases/2-analyze/visitors/SnippetBlock.js | 6 +----- .../2-analyze/visitors/SvelteBoundary.js | 6 +----- 8 files changed, 13 insertions(+), 63 deletions(-) diff --git a/packages/svelte/src/compiler/phases/2-analyze/index.js b/packages/svelte/src/compiler/phases/2-analyze/index.js index 353fb84605..f30d5d65cb 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/index.js +++ b/packages/svelte/src/compiler/phases/2-analyze/index.js @@ -309,8 +309,7 @@ export function analyze_module(source, options) { title: null, boundary: null, parent_element: null, - reactive_statement: null, - async_hoist_boundary: null + reactive_statement: null }, visitors ); @@ -709,8 +708,7 @@ export function analyze_component(root, source, options) { expression: null, state_fields: new Map(), function_depth: scope.function_depth, - reactive_statement: null, - async_hoist_boundary: ast === template.ast ? ast : null + reactive_statement: null }; walk(/** @type {AST.SvelteNode} */ (ast), state, visitors); @@ -779,8 +777,7 @@ export function analyze_component(root, source, options) { component_slots: new Set(), expression: null, state_fields: new Map(), - function_depth: scope.function_depth, - async_hoist_boundary: ast === template.ast ? ast : null + function_depth: scope.function_depth }; walk(/** @type {AST.SvelteNode} */ (ast), state, visitors); diff --git a/packages/svelte/src/compiler/phases/2-analyze/types.d.ts b/packages/svelte/src/compiler/phases/2-analyze/types.d.ts index a5b734f187..934c21d10b 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/types.d.ts +++ b/packages/svelte/src/compiler/phases/2-analyze/types.d.ts @@ -11,14 +11,6 @@ export interface AnalysisState { fragment: AST.Fragment | null; title: AST.TitleElement | null; boundary: AST.SvelteBoundary | null; - /** - * The "anchor" fragment for any hoisted promises. This is the root fragment when - * walking starts and until another boundary fragment is encountered, like a - * consequent or alternate of an `#if` or `#each` block. When this fragment is emitted - * during server transformation, the promise expressions will be hoisted out of the fragment - * and placed right above it in an array. - */ - async_hoist_boundary: AST.Fragment | null; /** * Tag name of the parent element. `null` if the parent is `svelte:element`, `#snippet`, a component or the root. * Parent doesn't necessarily mean direct path predecessor because there could be `#each`, `#if` etc in-between. diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/AwaitBlock.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/AwaitBlock.js index b26848f565..f9bbcd7031 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/AwaitBlock.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/AwaitBlock.js @@ -44,22 +44,7 @@ export function AwaitBlock(node, context) { // this one doesn't get the new state because it still hoists to the existing scope context.visit(node.expression, { ...context.state, expression: node.metadata.expression }); - if (node.pending) { - context.visit(node.pending, { - ...context.state, - async_hoist_boundary: node.pending - }); - } - if (node.then) { - context.visit(node.then, { - ...context.state, - async_hoist_boundary: node.then - }); - } - if (node.catch) { - context.visit(node.catch, { - ...context.state, - async_hoist_boundary: node.catch - }); - } + if (node.pending) context.visit(node.pending); + if (node.then) context.visit(node.then); + if (node.catch) context.visit(node.catch); } diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/EachBlock.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/EachBlock.js index 0a72b72a65..215edda8ad 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/EachBlock.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/EachBlock.js @@ -35,16 +35,10 @@ export function EachBlock(node, context) { scope: /** @type {Scope} */ (context.state.scope.parent) }); - context.visit(node.body, { - ...context.state, - async_hoist_boundary: node.body - }); + context.visit(node.body); if (node.key) context.visit(node.key); if (node.fallback) { - context.visit(node.fallback, { - ...context.state, - async_hoist_boundary: node.fallback - }); + context.visit(node.fallback); } if (!context.state.analysis.runes) { diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/IfBlock.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/IfBlock.js index edaf3d398e..10228397e0 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/IfBlock.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/IfBlock.js @@ -22,14 +22,8 @@ export function IfBlock(node, context) { expression: node.metadata.expression }); - context.visit(node.consequent, { - ...context.state, - async_hoist_boundary: node.consequent - }); + context.visit(node.consequent); if (node.alternate) { - context.visit(node.alternate, { - ...context.state, - async_hoist_boundary: node.alternate - }); + context.visit(node.alternate); } } diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/KeyBlock.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/KeyBlock.js index dbc2eb6611..09e604ea66 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/KeyBlock.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/KeyBlock.js @@ -17,9 +17,5 @@ export function KeyBlock(node, context) { mark_subtree_dynamic(context.path); context.visit(node.expression, { ...context.state, expression: node.metadata.expression }); - - context.visit(node.fragment, { - ...context.state, - async_hoist_boundary: node.fragment - }); + context.visit(node.fragment); } diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/SnippetBlock.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/SnippetBlock.js index d0554856e9..7930c2b1a7 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/SnippetBlock.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/SnippetBlock.js @@ -23,11 +23,7 @@ export function SnippetBlock(node, context) { } } - context.next({ - ...context.state, - parent_element: null, - async_hoist_boundary: node.body - }); + context.next({ ...context.state, parent_element: null }); const can_hoist = context.path.length === 1 && diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteBoundary.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteBoundary.js index 786b08bb88..d195e01f86 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteBoundary.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteBoundary.js @@ -34,9 +34,5 @@ export function SvelteBoundary(node, context) { ) ) ?? null; - context.next({ - ...context.state, - boundary: node, - async_hoist_boundary: node.fragment - }); + context.next({ ...context.state, boundary: node }); }