diff --git a/packages/compiler-core/src/transforms/transformExpression.ts b/packages/compiler-core/src/transforms/transformExpression.ts index 285c07e2bb7..96284d179bf 100644 --- a/packages/compiler-core/src/transforms/transformExpression.ts +++ b/packages/compiler-core/src/transforms/transformExpression.ts @@ -99,7 +99,8 @@ export function processExpression( // function params asParams = false, // v-on handler values may contain multiple statements - asRawStatements = false + asRawStatements = false, + localVars: Record = Object.create(context.identifiers) ): ExpressionNode { if (__BROWSER__) { if (__DEV__) { @@ -127,7 +128,7 @@ export function processExpression( const isDestructureAssignment = parent && isInDestructureAssignment(parent, parentStack) - if (type === BindingTypes.SETUP_CONST) { + if (type === BindingTypes.SETUP_CONST || localVars[raw]) { return raw } else if (type === BindingTypes.SETUP_REF) { return `${raw}.value` @@ -149,7 +150,13 @@ export function processExpression( const { right: rVal, operator } = parent as AssignmentExpression const rExp = rawExp.slice(rVal.start! - 1, rVal.end! - 1) const rExpString = stringifyExpression( - processExpression(createSimpleExpression(rExp, false), context) + processExpression( + createSimpleExpression(rExp, false), + context, + false, + false, + knownIds + ) ) return `${context.helperString(IS_REF)}(${raw})${ context.isTS ? ` //@ts-ignore\n` : `` @@ -190,6 +197,7 @@ export function processExpression( return `$${type}.${raw}` } } + // fallback to ctx return `_ctx.${raw}` } @@ -246,7 +254,6 @@ export function processExpression( } type QualifiedId = Identifier & PrefixMeta - const ids: QualifiedId[] = [] const parentStack: Node[] = [] const knownIds: Record = Object.create(context.identifiers) diff --git a/packages/compiler-sfc/__tests__/__snapshots__/compileScript.spec.ts.snap b/packages/compiler-sfc/__tests__/__snapshots__/compileScript.spec.ts.snap index b3ffe8e2c1a..430b2993f61 100644 --- a/packages/compiler-sfc/__tests__/__snapshots__/compileScript.spec.ts.snap +++ b/packages/compiler-sfc/__tests__/__snapshots__/compileScript.spec.ts.snap @@ -157,7 +157,7 @@ return { props, bar } }" `; -exports[`SFC compile