]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix: handle nested scope identifiers
authorEvan You <yyx990803@gmail.com>
Mon, 23 Sep 2019 17:56:56 +0000 (13:56 -0400)
committerEvan You <yyx990803@gmail.com>
Mon, 23 Sep 2019 17:56:56 +0000 (13:56 -0400)
packages/compiler-core/src/transform.ts

index 00caba19408b59ffec2d2aae41cf5cb856ac3c34..f6f51c2cb0c2fadf5853b902570a6f3e13e84448 100644 (file)
@@ -50,7 +50,7 @@ export interface TransformOptions {
 export interface TransformContext extends Required<TransformOptions> {
   imports: Set<string>
   statements: string[]
-  identifiers: { [name: string]: true }
+  identifiers: { [name: string]: number | undefined }
   parent: ParentNode
   ancestors: ParentNode[]
   childIndex: number
@@ -113,11 +113,15 @@ function createTransformContext(
       context.parent.children.splice(removalIndex, 1)
     },
     onNodeRemoved: () => {},
-    addIdentifier(exp) {
-      context.identifiers[exp.content] = true
+    addIdentifier({ content }) {
+      const { identifiers } = context
+      if (identifiers[content] === undefined) {
+        identifiers[content] = 0
+      }
+      ;(identifiers[content] as number)++
     },
-    removeIdentifier(exp) {
-      delete context.identifiers[exp.content]
+    removeIdentifier({ content }) {
+      ;(context.identifiers[content] as number)--
     }
   }
   return context