From 24164f9a9d0bc16d287e2c8017fde867e42b53ca Mon Sep 17 00:00:00 2001 From: ComputerGuy <63362464+Ocean-OS@users.noreply.github.com> Date: Sat, 30 Aug 2025 23:47:08 -0700 Subject: [PATCH] fix --- .../3-transform/client/visitors/ExpressionStatement.js | 2 ++ .../3-transform/client/visitors/VariableDeclaration.js | 10 +++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/ExpressionStatement.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/ExpressionStatement.js index 72b20bd837..d5b7115e7b 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/ExpressionStatement.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/ExpressionStatement.js @@ -1,6 +1,7 @@ /** @import { Expression, ExpressionStatement, Node, Program } from 'estree' */ /** @import { ComponentContext, ParallelizedChunk } from '../types' */ import * as b from '#compiler/builders'; +import { is_expression_async } from '../../../../utils/ast.js'; import { get_rune } from '../../../scope.js'; import { can_be_parallelized } from '../utils.js'; @@ -30,6 +31,7 @@ export function ExpressionStatement(node, context) { } if ( node.expression.type === 'AwaitExpression' && + !is_expression_async(node.expression.argument) && context.state.analysis.instance?.scope === context.state.scope ) { const current_chunk = context.state.current_parallelized_chunk; 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 0469577401..36ba43b84b 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 @@ -2,7 +2,7 @@ /** @import { Binding } from '#compiler' */ /** @import { ComponentContext, ParallelizedChunk } from '../types' */ import { dev, is_ignored, locate_node } from '../../../../state.js'; -import { extract_paths } from '../../../../utils/ast.js'; +import { extract_paths, is_expression_async } from '../../../../utils/ast.js'; import * as b from '#compiler/builders'; import * as assert from '../../../../utils/assert.js'; import { get_rune } from '../../../scope.js'; @@ -49,7 +49,8 @@ export function VariableDeclaration(node, context) { } if ( init?.type === 'AwaitExpression' && - context.state.analysis.instance?.scope === context.state.scope + context.state.analysis.instance?.scope === context.state.scope && + !is_expression_async(init.argument) ) { const current_chunk = context.state.current_parallelized_chunk; const parallelize = can_be_parallelized( @@ -182,6 +183,7 @@ export function VariableDeclaration(node, context) { declarator.id.type === 'Identifier' && context.state.analysis.instance?.scope === context.state.scope && value.type === 'AwaitExpression' && + !is_expression_async(value.argument) && can_be_parallelized(value.argument, context.state.scope, context.state.analysis, [ ...(current_chunk?.bindings ?? []), ...bindings @@ -317,10 +319,12 @@ export function VariableDeclaration(node, context) { const current_chunk = context.state.current_parallelized_chunk; if ( is_async && + init.type === 'AwaitExpression' && context.state.analysis.instance && context.state.scope === context.state.analysis.instance.scope && // TODO make it work without this - declarator.id.type === 'Identifier' + declarator.id.type === 'Identifier' && + !is_expression_async(init.argument) ) { parallelize = can_be_parallelized(value, context.state.scope, context.state.analysis, [ ...(current_chunk?.bindings ?? []),