diff --git a/packages/compiler-core/__tests__/parse.spec.ts b/packages/compiler-core/__tests__/parse.spec.ts index a116d22c1..4e6c80b38 100644 --- a/packages/compiler-core/__tests__/parse.spec.ts +++ b/packages/compiler-core/__tests__/parse.spec.ts @@ -1952,6 +1952,12 @@ describe('compiler: parse', () => { }) }) + // edge case found in vue-macros where the input is TS or JSX + test('should reset inRCDATA state', () => { + baseParse(``, { parseMode: 'sfc', onError() {} }) + expect(() => baseParse(`{ foo }`)).not.toThrow() + }) + describe('decodeEntities option', () => { test('use decode by default', () => { const ast: any = baseParse('><&'"&foo;') diff --git a/packages/compiler-core/src/tokenizer.ts b/packages/compiler-core/src/tokenizer.ts index 3a25c1c2d..ea6d0592e 100644 --- a/packages/compiler-core/src/tokenizer.ts +++ b/packages/compiler-core/src/tokenizer.ts @@ -271,6 +271,7 @@ export default class Tokenizer { this.sectionStart = 0 this.index = 0 this.baseState = State.Text + this.inRCDATA = false this.currentSequence = undefined! this.newlines.length = 0 this.delimiterOpen = defaultDelimitersOpen