From e49dffc9ece86bddf094b9ad4ad15eb4856d6277 Mon Sep 17 00:00:00 2001 From: Evan You Date: Mon, 27 Nov 2023 18:10:00 +0800 Subject: [PATCH] fix(parser): directive arg should be undefined on shorthands with no arg --- packages/compiler-core/__tests__/parse.spec.ts | 11 +++++++++++ packages/compiler-core/src/parser.ts | 1 + 2 files changed, 12 insertions(+) diff --git a/packages/compiler-core/__tests__/parse.spec.ts b/packages/compiler-core/__tests__/parse.spec.ts index 7eb5a000e5e..a116d22c148 100644 --- a/packages/compiler-core/__tests__/parse.spec.ts +++ b/packages/compiler-core/__tests__/parse.spec.ts @@ -1941,6 +1941,17 @@ describe('compiler: parse', () => { }) }) + test('arg should be undefined on shorthand dirs with no arg', () => { + const ast = baseParse(``) + const el = ast.children[0] as ElementNode + expect(el.props[0]).toMatchObject({ + type: NodeTypes.DIRECTIVE, + name: 'slot', + exp: undefined, + arg: undefined + }) + }) + describe('decodeEntities option', () => { test('use decode by default', () => { const ast: any = baseParse('><&'"&foo;') diff --git a/packages/compiler-core/src/parser.ts b/packages/compiler-core/src/parser.ts index 9effa0250e3..4e3c21480a2 100644 --- a/packages/compiler-core/src/parser.ts +++ b/packages/compiler-core/src/parser.ts @@ -238,6 +238,7 @@ const tokenizer = new Tokenizer(stack, { }, ondirarg(start, end) { + if (start === end) return const arg = getSlice(start, end) if (inVPre) { ;(currentProp as AttributeNode).name += arg