Skip to content

Commit

Permalink
simplify isLookaheadRelational method (#11922)
Browse files Browse the repository at this point in the history
* refactor: move isLookaheadRelational to flow plugins

* refactor: simplify isLookaheadRelational to isLookaheadToken_lt
  • Loading branch information
JLHwung committed Aug 6, 2020
1 parent cd577ee commit 76f033f
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 14 deletions.
13 changes: 0 additions & 13 deletions packages/babel-parser/src/parser/util.js
Expand Up @@ -6,7 +6,6 @@ import State from "../tokenizer/state";
import type { Node } from "../types";
import { lineBreak } from "../util/whitespace";
import { isIdentifierChar } from "../util/identifier";
import * as charCodes from "charcodes";
import { Errors } from "./error";

type TryParse<Node, Error, Thrown, Aborted, FailState> = {
Expand Down Expand Up @@ -35,18 +34,6 @@ export default class UtilParser extends Tokenizer {
return this.match(tt.relational) && this.state.value === op;
}

isLookaheadRelational(op: "<" | ">"): boolean {
const next = this.nextTokenStart();
if (this.input.charAt(next) === op) {
if (next + 1 === this.input.length) {
return true;
}
const afterNext = this.input.charCodeAt(next + 1);
return afterNext !== op.charCodeAt(0) && afterNext !== charCodes.equalsTo;
}
return false;
}

// TODO

expectRelational(op: "<" | ">"): void {
Expand Down
14 changes: 13 additions & 1 deletion packages/babel-parser/src/plugins/flow.js
Expand Up @@ -2873,7 +2873,7 @@ export default (superClass: Class<Parser>): Class<Parser> =>
noCalls: ?boolean,
subscriptState: N.ParseSubscriptState,
): N.Expression {
if (this.match(tt.questionDot) && this.isLookaheadRelational("<")) {
if (this.match(tt.questionDot) && this.isLookaheadToken_lt()) {
subscriptState.optionalChainMember = true;
if (noCalls) {
subscriptState.stop = true;
Expand Down Expand Up @@ -3475,4 +3475,16 @@ export default (superClass: Class<Parser>): Class<Parser> =>
super.updateContext(prevType);
}
}
// check if the next token is a tt.relation("<")
isLookaheadToken_lt(): boolean {
const next = this.nextTokenStart();
if (this.input.charCodeAt(next) === charCodes.lessThan) {
const afterNext = this.input.charCodeAt(next + 1);
return (
afterNext !== charCodes.lessThan && afterNext !== charCodes.equalsTo
);
}
return false;
}
};

0 comments on commit 76f033f

Please sign in to comment.