diff --git a/packages/compiler-core/src/transforms/transformVBindShorthand.ts b/packages/compiler-core/src/transforms/transformVBindShorthand.ts index a9d03397e..a2e5e9f93 100644 --- a/packages/compiler-core/src/transforms/transformVBindShorthand.ts +++ b/packages/compiler-core/src/transforms/transformVBindShorthand.ts @@ -6,6 +6,7 @@ import { } from '../ast' import type { NodeTransform } from '../transform' import { ErrorCodes, createCompilerError } from '../errors' +import { validFirstIdentCharRE } from '../utils' export const transformVBindShorthand: NodeTransform = (node, context) => { if (node.type === NodeTypes.ELEMENT) { @@ -28,7 +29,9 @@ export const transformVBindShorthand: NodeTransform = (node, context) => { prop.exp = createSimpleExpression('', true, arg.loc) } else { const propName = camelize((arg as SimpleExpressionNode).content) - prop.exp = createSimpleExpression(propName, false, arg.loc) + if (validFirstIdentCharRE.test(propName[0])) { + prop.exp = createSimpleExpression(propName, false, arg.loc) + } } } } diff --git a/packages/compiler-core/src/utils.ts b/packages/compiler-core/src/utils.ts index b49d70bb2..d2278992f 100644 --- a/packages/compiler-core/src/utils.ts +++ b/packages/compiler-core/src/utils.ts @@ -74,7 +74,7 @@ enum MemberExpLexState { inString, } -const validFirstIdentCharRE = /[A-Za-z_$\xA0-\uFFFF]/ +export const validFirstIdentCharRE: RegExp = /[A-Za-z_$\xA0-\uFFFF]/ const validIdentCharRE = /[\.\?\w$\xA0-\uFFFF]/ const whitespaceRE = /\s+[.[]\s*|\s*[.[]\s+/g