From: Evan You Date: Sat, 12 Oct 2019 00:35:01 +0000 (-0400) Subject: fix(compiler-core): fix directive args with empty holes X-Git-Tag: v3.0.0-alpha.0~482 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=acf406b7798e73c5a324c01bf0e121f0addd2eab;p=thirdparty%2Fvuejs%2Fcore.git fix(compiler-core): fix directive args with empty holes --- diff --git a/packages/compiler-core/src/transforms/transformElement.ts b/packages/compiler-core/src/transforms/transformElement.ts index 08c4eb5028..216e6cd637 100644 --- a/packages/compiler-core/src/transforms/transformElement.ts +++ b/packages/compiler-core/src/transforms/transformElement.ts @@ -141,7 +141,7 @@ export const transformElement: NodeTransform = (node, context) => { [ vnode, createArrayExpression( - runtimeDirectives.map(dir => createDirectiveArgs(dir, context)), + runtimeDirectives.map(dir => buildDirectiveArgs(dir, context)), loc ) ], @@ -390,7 +390,7 @@ function mergeAsArray(existing: Property, incoming: Property) { } } -function createDirectiveArgs( +function buildDirectiveArgs( dir: DirectiveNode, context: TransformContext ): ArrayExpression { @@ -407,8 +407,19 @@ function createDirectiveArgs( } const { loc } = dir if (dir.exp) dirArgs.push(dir.exp) - if (dir.arg) dirArgs.push(dir.arg) + if (dir.arg) { + if (!dir.exp) { + dirArgs.push(`void 0`) + } + dirArgs.push(dir.arg) + } if (Object.keys(dir.modifiers).length) { + if (!dir.arg) { + if (!dir.exp) { + dirArgs.push(`void 0`) + } + dirArgs.push(`void 0`) + } dirArgs.push( createObjectExpression( dir.modifiers.map(modifier =>