wip: save

This commit is contained in:
daiwei 2024-12-12 15:57:55 +08:00
parent 0aa49b069c
commit 6653d42d39
3 changed files with 19 additions and 12 deletions

View 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}`

View 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>

View 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),
})