pull/15844/head
Rich Harris 3 months ago
parent a1a289ecca
commit 97f81102bd

@ -36,9 +36,7 @@ export function RenderTag(node, context) {
memoizer.apply(); memoizer.apply();
/** @type {Statement[]} */ /** @type {Statement[]} */
const statements = memoizer.sync.map((memo) => const statements = memoizer.deriveds(context.state.analysis.runes);
b.let(memo.id, create_derived(context.state, b.thunk(memo.expression)))
);
let snippet_function = build_expression( let snippet_function = build_expression(
context, context,

@ -60,9 +60,7 @@ export function SlotElement(node, context) {
context.state.init.push(...lets); context.state.init.push(...lets);
/** @type {Statement[]} */ /** @type {Statement[]} */
const statements = memoizer.sync.map((memo) => const statements = memoizer.deriveds(context.state.analysis.runes);
b.let(memo.id, create_derived(context.state, b.thunk(memo.expression)))
);
const props_expression = const props_expression =
spreads.length === 0 ? b.object(props) : b.call('$.spread_props', b.object(props), ...spreads); spreads.length === 0 ? b.object(props) : b.call('$.spread_props', b.object(props), ...spreads);

@ -447,12 +447,7 @@ export function build_component(node, component_name, context) {
}; };
} }
const statements = [ const statements = [...snippet_declarations, ...memoizer.deriveds(context.state.analysis.runes)];
...snippet_declarations,
...memoizer.sync.map((memo) =>
b.let(memo.id, create_derived(context.state, b.thunk(memo.expression)))
)
];
if (is_component_dynamic) { if (is_component_dynamic) {
const prev = fn; const prev = fn;

@ -39,6 +39,12 @@ export class Memoizer {
return all; return all;
} }
deriveds(runes = true) {
return this.sync.map((memo) =>
b.let(memo.id, b.call(runes ? '$.derived' : '$.derived_safe_equal', b.thunk(memo.expression)))
);
}
async_ids() { async_ids() {
return this.async.map((memo) => memo.id); return this.async.map((memo) => memo.id);
} }

Loading…
Cancel
Save