]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix(transform): validate property name for v-bind shorthand edison/refactor/vBindShorthand 13438/head
authordaiwei <daiwei521@126.com>
Fri, 13 Jun 2025 08:46:48 +0000 (16:46 +0800)
committerdaiwei <daiwei521@126.com>
Fri, 13 Jun 2025 09:14:29 +0000 (17:14 +0800)
packages/compiler-core/src/transforms/transformVBindShorthand.ts
packages/compiler-core/src/utils.ts

index a9d03397e79cda232a0438717cc24b7d9a5c8f0e..a2e5e9f9339b3f10beff0c346c0970aaaed1a45c 100644 (file)
@@ -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)
+          }
         }
       }
     }
index b49d70bb2fba1d207e9ef76ab5d35cefcaec91aa..d2278992f85ad74fe6b01f3f958a37d1d833f5c5 100644 (file)
@@ -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