]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix(compiler-core): fix directive args with empty holes
authorEvan You <yyx990803@gmail.com>
Sat, 12 Oct 2019 00:35:01 +0000 (20:35 -0400)
committerEvan You <yyx990803@gmail.com>
Sat, 12 Oct 2019 00:35:01 +0000 (20:35 -0400)
packages/compiler-core/src/transforms/transformElement.ts

index 08c4eb5028038f924f441f03438aecb65d9e6369..216e6cd637561da780bee4d09c8c1dac943ec5f7 100644 (file)
@@ -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 =>