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}`
identifiers: string[]
operations: OperationNode[]
declareNames: Set<string>
- rewrittenNames: Set<string>
+ rewrittenNames: Map<string, string>
earlyCheckExps: string[]
preAccessNames: Set<string>
preAccessExps: Set<string>
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),
})