From c2d303f8be84731292908fb4a0552feeb59d139a Mon Sep 17 00:00:00 2001 From: Daniel Tschinder Date: Thu, 16 May 2019 02:31:21 -0700 Subject: [PATCH] Do not use lookahead when parsing declare module or declare module.exports in flow (#9985) * Do not use lookahead when parsing declare module or declare module.exports in flow * Improve code --- packages/babel-parser/src/plugins/flow.js | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/packages/babel-parser/src/plugins/flow.js b/packages/babel-parser/src/plugins/flow.js index 9522d13725a6..b5f4cbabcfaa 100644 --- a/packages/babel-parser/src/plugins/flow.js +++ b/packages/babel-parser/src/plugins/flow.js @@ -239,13 +239,13 @@ export default (superClass: Class): Class => return this.flowParseDeclareFunction(node); } else if (this.match(tt._var)) { return this.flowParseDeclareVariable(node); - } else if (this.isContextual("module")) { - if (this.lookahead().type === tt.dot) { + } else if (this.eatContextual("module")) { + if (this.match(tt.dot)) { return this.flowParseDeclareModuleExports(node); } else { if (insideModule) { this.unexpected( - null, + this.state.lastTokStart, "`declare module` cannot be used inside another `declare module`", ); } @@ -276,8 +276,6 @@ export default (superClass: Class): Class => } flowParseDeclareModule(node: N.FlowDeclareModule): N.FlowDeclareModule { - this.next(); - this.scope.enter(SCOPE_OTHER); if (this.match(tt.string)) { @@ -422,8 +420,7 @@ export default (superClass: Class): Class => flowParseDeclareModuleExports( node: N.FlowDeclareModuleExports, ): N.FlowDeclareModuleExports { - this.expectContextual("module"); - this.expect(tt.dot); + this.next(); this.expectContextual("exports"); node.typeAnnotation = this.flowParseTypeAnnotation(); this.semicolon();