handle blocked attributes

pull/17038/head
Rich Harris 4 weeks ago
parent 5186155999
commit 17bb97c7cb

@ -12,7 +12,8 @@ import {
process_children, process_children,
build_template, build_template,
create_child_block, create_child_block,
PromiseOptimiser PromiseOptimiser,
create_async_block
} from './shared/utils.js'; } from './shared/utils.js';
/** /**
@ -202,13 +203,19 @@ export function RegularElement(node, context) {
state.template.push(b.stmt(b.call('$.pop_element'))); state.template.push(b.stmt(b.call('$.pop_element')));
} }
if (optimiser.expressions.length > 0) { if (optimiser.is_async()) {
context.state.template.push( let statement = create_child_block(
create_child_block(
b.block([optimiser.apply(), ...state.init, ...build_template(state.template)]), b.block([optimiser.apply(), ...state.init, ...build_template(state.template)]),
true true
)
); );
const blockers = optimiser.blockers();
if (blockers.elements.length > 0) {
statement = create_async_block(b.block([statement]), blockers, false, false);
}
context.state.template.push(statement);
} else { } else {
context.state.init.push(...state.init); context.state.init.push(...state.init);
context.state.template.push(...state.template); context.state.template.push(...state.template);

Loading…
Cancel
Save