From 9c01e0bf0d2aa5b06685ae1c40d393a680f6c8f3 Mon Sep 17 00:00:00 2001 From: Evan You Date: Sun, 22 Sep 2019 17:02:32 -0400 Subject: [PATCH] fix(transform): transform should still apply even when node is removed --- packages/compiler-core/src/codegen.ts | 10 +++++++--- packages/compiler-core/src/transform.ts | 13 +++++++------ 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/packages/compiler-core/src/codegen.ts b/packages/compiler-core/src/codegen.ts index ed2b6f0509..4ce9c34adc 100644 --- a/packages/compiler-core/src/codegen.ts +++ b/packages/compiler-core/src/codegen.ts @@ -287,16 +287,20 @@ function genIfBranch( context: CodegenContext ) { if (condition) { + const { push, indent, deindent, newline } = context // v-if or v-else-if - context.push(`(${condition.content})`, condition) - context.push(`?`) + push(`(${condition.content})`, condition) + indent() + push(`? `) genChildren(children, context) - context.push(`:`) + newline() + push(`: `) if (nextIndex < branches.length) { genIfBranch(branches[nextIndex], branches, nextIndex + 1, context) } else { context.push(`null`) } + deindent() } else { // v-else __DEV__ && assert(nextIndex === branches.length) diff --git a/packages/compiler-core/src/transform.ts b/packages/compiler-core/src/transform.ts index 4e3fda5ec5..f9bef475e3 100644 --- a/packages/compiler-core/src/transform.ts +++ b/packages/compiler-core/src/transform.ts @@ -132,12 +132,13 @@ function traverseNode( for (let i = 0; i < nodeTransforms.length; i++) { const plugin = nodeTransforms[i] plugin(node, context) - if (!context.currentNode) { - return - } else { - // node may have been replaced - node = context.currentNode - } + // node may have been replaced + node = context.currentNode || node + } + + if (!context.currentNode) { + // node was removed + return } // further traverse downwards -- 2.47.3