From e8c07e8b0c23ed6bbdc8c1cdf53b9b336545e266 Mon Sep 17 00:00:00 2001 From: Rich-Harris Date: Sat, 6 May 2017 17:15:15 -0400 Subject: [PATCH] fix destruction of compound if blocks with outros --- src/generators/dom/visitors/IfBlock.js | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/generators/dom/visitors/IfBlock.js b/src/generators/dom/visitors/IfBlock.js index 5fd61088b2..05ed1c1481 100644 --- a/src/generators/dom/visitors/IfBlock.js +++ b/src/generators/dom/visitors/IfBlock.js @@ -77,13 +77,9 @@ export default function visitIfBlock ( generator, block, state, node ) { } else if ( node.next ) { node.next.usedAsAnchor = true; } - - block.builders.destroy.addLine( - `${if_name}${name}.destroy( ${state.parentNode ? 'false' : 'detach'} );` - ); } -function simple ( generator, block, state, node, branch, dynamic, { name, anchor, params } ) { +function simple ( generator, block, state, node, branch, dynamic, { name, anchor, params, if_name } ) { block.builders.create.addBlock( deindent` var ${name} = (${branch.condition}) && ${branch.block}( ${params}, ${block.component} ); ` ); @@ -151,6 +147,10 @@ function simple ( generator, block, state, node, branch, dynamic, { name, anchor ${exit} } ` ); + + block.builders.destroy.addLine( + `${if_name}${name}.destroy( ${state.parentNode ? 'false' : 'detach'} );` + ); } function compound ( generator, block, state, node, branches, dynamic, { name, anchor, params, hasElse, if_name } ) { @@ -201,6 +201,10 @@ function compound ( generator, block, state, node, branches, dynamic, { name, an } ` ); } + + block.builders.destroy.addLine( + `${if_name}${name}.destroy( ${state.parentNode ? 'false' : 'detach'} );` + ); } // if any of the siblings have outros, we need to keep references to the blocks @@ -304,4 +308,8 @@ function compoundWithOutros ( generator, block, state, node, branches, dynamic, } ` ); } + + block.builders.destroy.addLine( + `${if_current_block_index}${if_blocks}[ ${current_block_index} ].destroy( ${state.parentNode ? 'false' : 'detach'} );` + ); }