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
This commit is contained in:
parent
4da7a01aa9
commit
c2d303f8be
@ -239,13 +239,13 @@ export default (superClass: Class<Parser>): Class<Parser> =>
|
|||||||
return this.flowParseDeclareFunction(node);
|
return this.flowParseDeclareFunction(node);
|
||||||
} else if (this.match(tt._var)) {
|
} else if (this.match(tt._var)) {
|
||||||
return this.flowParseDeclareVariable(node);
|
return this.flowParseDeclareVariable(node);
|
||||||
} else if (this.isContextual("module")) {
|
} else if (this.eatContextual("module")) {
|
||||||
if (this.lookahead().type === tt.dot) {
|
if (this.match(tt.dot)) {
|
||||||
return this.flowParseDeclareModuleExports(node);
|
return this.flowParseDeclareModuleExports(node);
|
||||||
} else {
|
} else {
|
||||||
if (insideModule) {
|
if (insideModule) {
|
||||||
this.unexpected(
|
this.unexpected(
|
||||||
null,
|
this.state.lastTokStart,
|
||||||
"`declare module` cannot be used inside another `declare module`",
|
"`declare module` cannot be used inside another `declare module`",
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -276,8 +276,6 @@ export default (superClass: Class<Parser>): Class<Parser> =>
|
|||||||
}
|
}
|
||||||
|
|
||||||
flowParseDeclareModule(node: N.FlowDeclareModule): N.FlowDeclareModule {
|
flowParseDeclareModule(node: N.FlowDeclareModule): N.FlowDeclareModule {
|
||||||
this.next();
|
|
||||||
|
|
||||||
this.scope.enter(SCOPE_OTHER);
|
this.scope.enter(SCOPE_OTHER);
|
||||||
|
|
||||||
if (this.match(tt.string)) {
|
if (this.match(tt.string)) {
|
||||||
@ -422,8 +420,7 @@ export default (superClass: Class<Parser>): Class<Parser> =>
|
|||||||
flowParseDeclareModuleExports(
|
flowParseDeclareModuleExports(
|
||||||
node: N.FlowDeclareModuleExports,
|
node: N.FlowDeclareModuleExports,
|
||||||
): N.FlowDeclareModuleExports {
|
): N.FlowDeclareModuleExports {
|
||||||
this.expectContextual("module");
|
this.next();
|
||||||
this.expect(tt.dot);
|
|
||||||
this.expectContextual("exports");
|
this.expectContextual("exports");
|
||||||
node.typeAnnotation = this.flowParseTypeAnnotation();
|
node.typeAnnotation = this.flowParseTypeAnnotation();
|
||||||
this.semicolon();
|
this.semicolon();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user