pull/17038/head
Rich Harris 3 days ago
parent 92e0fc23f6
commit 158013473f

@ -10,16 +10,13 @@ import * as e from '../../../errors.js';
export function AwaitExpression(node, context) {
const tla = context.state.ast_type === 'instance' && context.state.function_depth === 1;
// preserve context for
// a) top-level await and
// b) awaits that precede other expressions in template or `$derived(...)`
// preserve context for awaits that precede other expressions in template or `$derived(...)`
if (
tla ||
(is_reactive_expression(
is_reactive_expression(
context.path,
context.state.derived_function_depth === context.state.function_depth
) &&
!is_last_evaluated_expression(context.path, node))
!is_last_evaluated_expression(context.path, node)
) {
context.state.analysis.pickled_awaits.add(node);
}

@ -314,10 +314,11 @@ function transform_body(program, context) {
}
if (s.node.type === 'ExpressionStatement') {
return b.thunk(
b.unary('void', /** @type {Expression} */ (context.visit(s.node.expression))),
s.has_await
);
const expression = /** @type {Expression} */ (context.visit(s.node.expression));
return expression.type === 'AwaitExpression'
? b.thunk(expression, true)
: b.thunk(b.unary('void', expression), s.has_await);
}
return b.thunk(b.block([/** @type {Statement} */ (context.visit(s.node))]), s.has_await);

@ -184,10 +184,11 @@ function transform_body(program, context) {
}
if (s.node.type === 'ExpressionStatement') {
return b.thunk(
b.unary('void', /** @type {Expression} */ (context.visit(s.node.expression))),
s.has_await
);
const expression = /** @type {Expression} */ (context.visit(s.node.expression));
return expression.type === 'AwaitExpression'
? b.thunk(expression, true)
: b.thunk(b.unary('void', expression), s.has_await);
}
return b.thunk(b.block([/** @type {Statement} */ (context.visit(s.node))]), s.has_await);

Loading…
Cancel
Save