|  |  |  | @ -77,12 +77,11 @@ export function process_children(nodes, { visit, state }) { | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	for (const node of nodes) { | 
			
		
	
		
			
				
					|  |  |  |  | 		if (node.type === 'ExpressionTag' && node.metadata.expression.has_await) { | 
			
		
	
		
			
				
					|  |  |  |  | 		if (node.type === 'ExpressionTag' && node.metadata.expression.is_async()) { | 
			
		
	
		
			
				
					|  |  |  |  | 			flush(); | 
			
		
	
		
			
				
					|  |  |  |  | 			const visited = /** @type {Expression} */ (visit(node.expression)); | 
			
		
	
		
			
				
					|  |  |  |  | 			state.template.push( | 
			
		
	
		
			
				
					|  |  |  |  | 				b.stmt(b.call('$$renderer.push', b.thunk(b.call('$.escape', visited), true))) | 
			
		
	
		
			
				
					|  |  |  |  | 			); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 			const expression = /** @type {Expression} */ (visit(node.expression)); | 
			
		
	
		
			
				
					|  |  |  |  | 			state.template.push(create_push(b.call('$.escape', expression), node.metadata.expression)); | 
			
		
	
		
			
				
					|  |  |  |  | 		} else if (node.type === 'Text' || node.type === 'Comment' || node.type === 'ExpressionTag') { | 
			
		
	
		
			
				
					|  |  |  |  | 			sequence.push(node); | 
			
		
	
		
			
				
					|  |  |  |  | 		} else { | 
			
		
	
	
		
			
				
					|  |  |  | @ -277,26 +276,33 @@ export function create_child_block(body, async) { | 
			
		
	
		
			
				
					|  |  |  |  |  * @param {BlockStatement | Expression} body | 
			
		
	
		
			
				
					|  |  |  |  |  * @param {ArrayExpression} blockers | 
			
		
	
		
			
				
					|  |  |  |  |  * @param {boolean} has_await | 
			
		
	
		
			
				
					|  |  |  |  |  * @param {boolean} markers | 
			
		
	
		
			
				
					|  |  |  |  |  */ | 
			
		
	
		
			
				
					|  |  |  |  | export function create_async_block(body, blockers = b.array([]), has_await = true) { | 
			
		
	
		
			
				
					|  |  |  |  | export function create_async_block(body, blockers = b.array([]), has_await = true, markers = true) { | 
			
		
	
		
			
				
					|  |  |  |  | 	return b.stmt( | 
			
		
	
		
			
				
					|  |  |  |  | 		b.call('$$renderer.async', blockers, b.arrow([b.id('$$renderer')], body, has_await)) | 
			
		
	
		
			
				
					|  |  |  |  | 		b.call( | 
			
		
	
		
			
				
					|  |  |  |  | 			'$$renderer.async', | 
			
		
	
		
			
				
					|  |  |  |  | 			blockers, | 
			
		
	
		
			
				
					|  |  |  |  | 			b.arrow([b.id('$$renderer')], body, has_await), | 
			
		
	
		
			
				
					|  |  |  |  | 			markers && b.true | 
			
		
	
		
			
				
					|  |  |  |  | 		) | 
			
		
	
		
			
				
					|  |  |  |  | 	); | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | /** | 
			
		
	
		
			
				
					|  |  |  |  |  * @param {Expression} expression | 
			
		
	
		
			
				
					|  |  |  |  |  * @param {ExpressionMetadata} metadata | 
			
		
	
		
			
				
					|  |  |  |  |  * @param {boolean} markers | 
			
		
	
		
			
				
					|  |  |  |  |  * @returns {Expression | Statement} | 
			
		
	
		
			
				
					|  |  |  |  |  */ | 
			
		
	
		
			
				
					|  |  |  |  | export function create_push(expression, metadata) { | 
			
		
	
		
			
				
					|  |  |  |  | export function create_push(expression, metadata, markers = false) { | 
			
		
	
		
			
				
					|  |  |  |  | 	if (metadata.is_async()) { | 
			
		
	
		
			
				
					|  |  |  |  | 		let statement = b.stmt(b.call('$$renderer.push', b.thunk(expression, metadata.has_await))); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		const blockers = metadata.blockers(); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		if (blockers.elements.length > 0) { | 
			
		
	
		
			
				
					|  |  |  |  | 			statement = create_async_block(b.block([statement]), blockers, false); | 
			
		
	
		
			
				
					|  |  |  |  | 			statement = create_async_block(b.block([statement]), blockers, false, markers); | 
			
		
	
		
			
				
					|  |  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		return statement; | 
			
		
	
	
		
			
				
					|  |  |  | 
 |