From: Evan You Date: Wed, 7 Feb 2024 04:15:39 +0000 (+0800) Subject: fix(compiler-core): handle same-name shorthand edge case for in-DOM templates X-Git-Tag: v3.4.16~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cb87b6213d7b003fa7280712c285c7c9d9f291ca;p=thirdparty%2Fvuejs%2Fcore.git fix(compiler-core): handle same-name shorthand edge case for in-DOM templates Also add error for invalid arguments for same-name shorthand. close #10280 --- diff --git a/packages/compiler-core/__tests__/transforms/vBind.spec.ts b/packages/compiler-core/__tests__/transforms/vBind.spec.ts index 84b9ee8ca4..be063b8a9d 100644 --- a/packages/compiler-core/__tests__/transforms/vBind.spec.ts +++ b/packages/compiler-core/__tests__/transforms/vBind.spec.ts @@ -408,4 +408,22 @@ describe('compiler: transform v-bind', () => { }, }) }) + + test('error on invalid argument for same-name shorthand', () => { + const onError = vi.fn() + parseWithVBind(`
`, { onError }) + expect(onError.mock.calls[0][0]).toMatchObject({ + code: ErrorCodes.X_V_BIND_INVALID_SAME_NAME_ARGUMENT, + loc: { + start: { + line: 1, + column: 13, + }, + end: { + line: 1, + column: 18, + }, + }, + }) + }) }) diff --git a/packages/compiler-core/src/errors.ts b/packages/compiler-core/src/errors.ts index 6728a80d44..cd6a443c5c 100644 --- a/packages/compiler-core/src/errors.ts +++ b/packages/compiler-core/src/errors.ts @@ -78,6 +78,7 @@ export enum ErrorCodes { X_V_FOR_MALFORMED_EXPRESSION, X_V_FOR_TEMPLATE_KEY_PLACEMENT, X_V_BIND_NO_EXPRESSION, + X_V_BIND_INVALID_SAME_NAME_ARGUMENT, X_V_ON_NO_EXPRESSION, X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET, X_V_SLOT_MIXED_SLOT_USAGE, @@ -156,6 +157,7 @@ export const errorMessages: Record = { [ErrorCodes.X_V_FOR_MALFORMED_EXPRESSION]: `v-for has invalid expression.`, [ErrorCodes.X_V_FOR_TEMPLATE_KEY_PLACEMENT]: `