diff --git a/moo.js b/moo.js index 5b7fdef..1b3f1fb 100644 --- a/moo.js +++ b/moo.js @@ -409,9 +409,8 @@ this.index = 0 this.line = info ? info.line : 1 this.col = info ? info.col : 1 - this.queuedToken = info ? info.queuedToken : null + this.queuedGroup = info ? info.queuedGroup : null this.queuedText = info ? info.queuedText: ""; - this.queuedThrow = info ? info.queuedThrow : null this.setState(info ? info.state : this.startState) this.stack = info && info.stack ? info.stack.slice() : [] return this @@ -423,9 +422,8 @@ col: this.col, state: this.state, stack: this.stack.slice(), - queuedToken: this.queuedToken, + queuedGroup: this.queuedGroup, queuedText: this.queuedText, - queuedThrow: this.queuedThrow, } } diff --git a/test/test.js b/test/test.js index f3300b0..7164dd0 100644 --- a/test/test.js +++ b/test/test.js @@ -305,6 +305,33 @@ describe('fallback tokens', () => { expect(lexer.fast).toEqual({}) }) + test('save and reset', () => { + const lexer = compile({ + number: {match: /\d+/}, + text: moo.fallback + }) + lexer.reset('test123') + lexer.next() + + const savedInfo = lexer.save(); + expect(savedInfo).toMatchObject({ + queuedGroup: {defaultType: 'number'}, + queuedText: '123' + }) + + lexer.reset() + expect(lexer).toMatchObject({ + queuedGroup: null, + queuedText: '', + }) + + lexer.reset('', savedInfo) + expect(lexer.next()).toMatchObject({ + type: 'number', + text: '123', + }) + }) + }) describe('keywords', () => {