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 type { Node } from "../types";
|
||||||
import { lineBreak } from "../util/whitespace";
|
import { lineBreak } from "../util/whitespace";
|
||||||
import { isIdentifierChar } from "../util/identifier";
|
import { isIdentifierChar } from "../util/identifier";
|
||||||
import * as charCodes from "charcodes";
|
|
||||||
import { Errors } from "./error";
|
import { Errors } from "./error";
|
||||||
|
|
||||||
type TryParse<Node, Error, Thrown, Aborted, FailState> = {
|
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;
|
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
|
// TODO
|
||||||
|
|
||||||
expectRelational(op: "<" | ">"): void {
|
expectRelational(op: "<" | ">"): void {
|
||||||
|
|||||||
@ -2873,7 +2873,7 @@ export default (superClass: Class<Parser>): Class<Parser> =>
|
|||||||
noCalls: ?boolean,
|
noCalls: ?boolean,
|
||||||
subscriptState: N.ParseSubscriptState,
|
subscriptState: N.ParseSubscriptState,
|
||||||
): N.Expression {
|
): N.Expression {
|
||||||
if (this.match(tt.questionDot) && this.isLookaheadRelational("<")) {
|
if (this.match(tt.questionDot) && this.isLookaheadToken_lt()) {
|
||||||
subscriptState.optionalChainMember = true;
|
subscriptState.optionalChainMember = true;
|
||||||
if (noCalls) {
|
if (noCalls) {
|
||||||
subscriptState.stop = true;
|
subscriptState.stop = true;
|
||||||
@ -3475,4 +3475,16 @@ export default (superClass: Class<Parser>): Class<Parser> =>
|
|||||||
super.updateContext(prevType);
|
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