From c00925ed5c409b57a1540b79c595b7f8117e2d4c Mon Sep 17 00:00:00 2001 From: Herrington Darkholme <2883231+HerringtonDarkholme@users.noreply.github.com> Date: Thu, 2 Sep 2021 21:42:20 +0800 Subject: [PATCH] fix(compiler): report invalid directive name error (#4494) (#4495) --- .../compiler-core/__tests__/parse.spec.ts | 21 +++++++++++++++++++ packages/compiler-core/src/errors.ts | 2 ++ packages/compiler-core/src/parse.ts | 7 ++++++- 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/packages/compiler-core/__tests__/parse.spec.ts b/packages/compiler-core/__tests__/parse.spec.ts index 0e839d26bc7..51cdb0e38c1 100644 --- a/packages/compiler-core/__tests__/parse.spec.ts +++ b/packages/compiler-core/__tests__/parse.spec.ts @@ -1244,6 +1244,27 @@ describe('compiler: parse', () => { } }) }) + test('directive with no name', () => { + let errorCode = -1 + const ast = baseParse('
', { + onError: err => { + errorCode = err.code as number + } + }) + const directive = (ast.children[0] as ElementNode).props[0] + + expect(errorCode).toBe(ErrorCodes.X_MISSING_DIRECTIVE_NAME) + expect(directive).toStrictEqual({ + type: NodeTypes.ATTRIBUTE, + name: 'v-', + value: undefined, + loc: { + start: { offset: 5, line: 1, column: 6 }, + end: { offset: 7, line: 1, column: 8 }, + source: 'v-' + } + }) + }) test('v-bind shorthand', () => { const ast = baseParse('') diff --git a/packages/compiler-core/src/errors.ts b/packages/compiler-core/src/errors.ts index 57f2f3b2ef7..1f2afac7e66 100644 --- a/packages/compiler-core/src/errors.ts +++ b/packages/compiler-core/src/errors.ts @@ -67,6 +67,7 @@ export const enum ErrorCodes { X_INVALID_END_TAG, X_MISSING_END_TAG, X_MISSING_INTERPOLATION_END, + X_MISSING_DIRECTIVE_NAME, X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END, // transform errors @@ -143,6 +144,7 @@ export const errorMessages: Record