simplify isLookaheadRelational method (#11922)
* refactor: move isLookaheadRelational to flow plugins * refactor: simplify isLookaheadRelational to isLookaheadToken_lt
This commit is contained in:
parent
cd577eedfd
commit
76f033f8c7
@ -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> = {
|
||||
@ -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 {
|
||||
|
||||
@ -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;
|
||||
@ -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;
|
||||
}
|
||||
};
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user