pull/15844/head
Rich Harris 3 months ago
parent a01249ee21
commit 2c2557aaa8

@ -13,10 +13,7 @@ import { get_expression_id, build_expression } from './shared/utils.js';
export function RenderTag(node, context) {
context.state.template.push_comment();
const expression = unwrap_optional(node.expression);
const callee = expression.callee;
const raw_args = expression.arguments;
const call = unwrap_optional(node.expression);
/** @type {Expression[]} */
let args = [];
@ -27,18 +24,16 @@ export function RenderTag(node, context) {
/** @type {MemoizedExpression[]} */
const async_expressions = [];
for (let i = 0; i < raw_args.length; i++) {
let expression = build_expression(
context,
/** @type {Expression} */ (raw_args[i]),
node.metadata.arguments[i]
);
const { has_call, has_await } = node.metadata.arguments[i];
for (let i = 0; i < call.arguments.length; i++) {
const arg = /** @type {Expression} */ (call.arguments[i]);
const metadata = node.metadata.arguments[i];
let expression = build_expression(context, arg, metadata);
if (has_await || has_call) {
if (metadata.has_await || metadata.has_call) {
expression = b.call(
'$.get',
get_expression_id(has_await ? async_expressions : expressions, expression)
get_expression_id(metadata.has_await ? async_expressions : expressions, expression)
);
}
@ -50,13 +45,13 @@ export function RenderTag(node, context) {
});
/** @type {Statement[]} */
const statements = expressions.map((memo, i) =>
const statements = expressions.map((memo) =>
b.var(memo.id, create_derived(context.state, b.thunk(memo.expression)))
);
let snippet_function = build_expression(
context,
/** @type {Expression} */ (callee),
/** @type {Expression} */ (call.callee),
node.metadata.expression
);

Loading…
Cancel
Save