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) { export function RenderTag(node, context) {
context.state.template.push_comment(); context.state.template.push_comment();
const expression = unwrap_optional(node.expression); const call = unwrap_optional(node.expression);
const callee = expression.callee;
const raw_args = expression.arguments;
/** @type {Expression[]} */ /** @type {Expression[]} */
let args = []; let args = [];
@ -27,18 +24,16 @@ export function RenderTag(node, context) {
/** @type {MemoizedExpression[]} */ /** @type {MemoizedExpression[]} */
const async_expressions = []; const async_expressions = [];
for (let i = 0; i < raw_args.length; i++) { for (let i = 0; i < call.arguments.length; i++) {
let expression = build_expression( const arg = /** @type {Expression} */ (call.arguments[i]);
context, const metadata = node.metadata.arguments[i];
/** @type {Expression} */ (raw_args[i]),
node.metadata.arguments[i] let expression = build_expression(context, arg, metadata);
);
const { has_call, has_await } = node.metadata.arguments[i];
if (has_await || has_call) { if (metadata.has_await || metadata.has_call) {
expression = b.call( expression = b.call(
'$.get', '$.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[]} */ /** @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))) b.var(memo.id, create_derived(context.state, b.thunk(memo.expression)))
); );
let snippet_function = build_expression( let snippet_function = build_expression(
context, context,
/** @type {Expression} */ (callee), /** @type {Expression} */ (call.callee),
node.metadata.expression node.metadata.expression
); );

Loading…
Cancel
Save