]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
wip: save edison/fix/propReturnValueCodeGen 12530/head
authordaiwei <daiwei521@126.com>
Thu, 12 Dec 2024 07:57:55 +0000 (15:57 +0800)
committerdaiwei <daiwei521@126.com>
Thu, 12 Dec 2024 07:57:55 +0000 (15:57 +0800)
packages/compiler-vapor/src/generators/prop.ts
packages/compiler-vapor/src/ir/index.ts
packages/compiler-vapor/src/transform.ts

index cf1bce982e0596f12d4809ca1350e810351c3d1e..fb23c1a4e0005b32a57156eed08662186e2f629f 100644 (file)
@@ -283,22 +283,29 @@ function processValue(
   needRewrite: boolean = true,
 ): string[] | undefined {
   const { processingRenderEffect, allRenderEffectSeenNames } = context
-  const { declareNames, earlyCheckExps, preAccessNames, preAccessExps } =
-    processingRenderEffect!
+  const {
+    declareNames,
+    rewrittenNames,
+    earlyCheckExps,
+    preAccessNames,
+    preAccessExps,
+  } = processingRenderEffect!
 
   for (const frag of values) {
     if (!isArray(frag)) continue
     // [code, newlineIndex, loc, name] -> [(__name), newlineIndex, loc, name]
     const [newName, , , rawName] = frag
     if (rawName) {
-      let name = rawName.replace(/[^\w]/g, '_')
-
-      name = `_${name}`
-      if (!declareNames.has(name)) {
-        if (allRenderEffectSeenNames[name] === undefined)
-          allRenderEffectSeenNames[name] = 0
-        else name += ++allRenderEffectSeenNames[name]
-        declareNames.add(name)
+      let name = rewrittenNames.get(rawName)
+      if (!name) {
+        name = `_${rawName.replace(/[^\w]/g, '_')}`
+        if (!declareNames.has(name)) {
+          if (allRenderEffectSeenNames[name] === undefined)
+            allRenderEffectSeenNames[name] = 0
+          else name += ++allRenderEffectSeenNames[name]
+          declareNames.add(name)
+        }
+        rewrittenNames.set(newName, name)
       }
 
       const preAccessName = `_${name}`
index e0e1d979aa88a53d0bb003aab9e05b60162c2baa..a80a36ad1290375c7aaad405eb63f990a7cdc009 100644 (file)
@@ -263,7 +263,7 @@ export interface IREffect {
   identifiers: string[]
   operations: OperationNode[]
   declareNames: Set<string>
-  rewrittenNames: Set<string>
+  rewrittenNames: Map<string, string>
   earlyCheckExps: string[]
   preAccessNames: Set<string>
   preAccessExps: Set<string>
index f8484515c212d1d068d4ff16ee53ab1be39a2c03..34158f0f557e625cae475770f491c9e68612afdc 100644 (file)
@@ -169,7 +169,7 @@ export class TransformContext<T extends AllNode = AllNode> {
         preAccessNames: new Set<string>(),
         preAccessExps: new Set<string>(),
         declareNames: new Set<string>(),
-        rewrittenNames: new Set<string>(),
+        rewrittenNames: new Map<string, string>(),
         inVFor: this.inVFor > 0,
         identifiers: Array.from(ids),
       })