diff --git a/packages/compiler-core/__tests__/transforms/vOn.spec.ts b/packages/compiler-core/__tests__/transforms/vOn.spec.ts index 568fa0b5a8c..d4433c6a55a 100644 --- a/packages/compiler-core/__tests__/transforms/vOn.spec.ts +++ b/packages/compiler-core/__tests__/transforms/vOn.spec.ts @@ -13,11 +13,12 @@ import { import { transformOn } from '../../src/transforms/vOn' import { transformElement } from '../../src/transforms/transformElement' import { transformExpression } from '../../src/transforms/transformExpression' +import { transformFor } from 'packages/compiler-core/src/transforms/vFor' function parseWithVOn(template: string, options: CompilerOptions = {}) { const ast = parse(template, options) transform(ast, { - nodeTransforms: [transformExpression, transformElement], + nodeTransforms: [transformExpression, transformElement, transformFor], directiveTransforms: { on: transformOn, }, @@ -683,5 +684,17 @@ describe('compiler: transform v-on', () => { }, }) }) + + test('should not be cached with Chinese identifiers', () => { + const { root } = parseWithVOn( + ``, + { + prefixIdentifiers: true, + cacheHandlers: true, + }, + ) + + expect(root.cached).toBe(0) + }) }) }) diff --git a/packages/compiler-core/src/utils.ts b/packages/compiler-core/src/utils.ts index 99a2c5b61a8..48ea4e04e5c 100644 --- a/packages/compiler-core/src/utils.ts +++ b/packages/compiler-core/src/utils.ts @@ -62,7 +62,7 @@ export function isCoreComponent(tag: string): symbol | void { } } -const nonIdentifierRE = /^\d|[^\$\w]/ +const nonIdentifierRE = /^\d|[^\$\w\u4e00-\u9fa5]/ export const isSimpleIdentifier = (name: string): boolean => !nonIdentifierRE.test(name)