From: edison Date: Fri, 13 Sep 2024 08:46:01 +0000 (+0800) Subject: fix(compiler-core): fix handling of delimiterOpen in VPre (#11915) X-Git-Tag: v3.5.5~11 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=706d4ac1d0210b2d9134b3228280187fe02fc971;p=thirdparty%2Fvuejs%2Fcore.git fix(compiler-core): fix handling of delimiterOpen in VPre (#11915) close #11913 --- diff --git a/packages/compiler-core/__tests__/parse.spec.ts b/packages/compiler-core/__tests__/parse.spec.ts index 37e81e6492..77211b2f5f 100644 --- a/packages/compiler-core/__tests__/parse.spec.ts +++ b/packages/compiler-core/__tests__/parse.spec.ts @@ -2019,6 +2019,21 @@ describe('compiler: parse', () => { children: [{ type: NodeTypes.TEXT, content: `{{ number ` }], }, ]) + + const ast3 = baseParse(`
`, { + parseMode: 'html', + }) + expect((ast3.children[0] as ElementNode).children).toMatchObject([ + { + type: NodeTypes.ELEMENT, + children: [ + { + type: NodeTypes.TEXT, + content: `{{ foo `, + }, + ], + }, + ]) }) test('self-closing v-pre', () => { diff --git a/packages/compiler-core/src/tokenizer.ts b/packages/compiler-core/src/tokenizer.ts index 35c49fa654..329e8b4818 100644 --- a/packages/compiler-core/src/tokenizer.ts +++ b/packages/compiler-core/src/tokenizer.ts @@ -438,7 +438,7 @@ export default class Tokenizer { // We have to parse entities in and <textarea> tags. if (!__BROWSER__ && c === CharCodes.Amp) { this.startEntity() - } else if (c === this.delimiterOpen[0]) { + } else if (!this.inVPre && c === this.delimiterOpen[0]) { // We also need to handle interpolation this.state = State.InterpolationOpen this.delimiterIndex = 0