@@ -1520,10 +1520,6 @@ protected Expression parseSubscripts(
15201520 }
15211521 }
15221522
1523- protected boolean isOnOptionalChain (boolean optional , Expression base ) {
1524- return optional || base instanceof Chainable && ((Chainable ) base ).isOnOptionalChain ();
1525- }
1526-
15271523 /**
15281524 * Parse a single subscript {@code s}; if more subscripts could follow, return {@code Pair.make(s,
15291525 * true}, otherwise return {@code Pair.make(s, false)}.
@@ -1544,7 +1540,7 @@ protected Pair<Expression, Boolean> parseSubscript(
15441540 this .parseExpression (false , null ),
15451541 true ,
15461542 optional ,
1547- isOnOptionalChain (optional , base ));
1543+ Chainable . isOnOptionalChain (optional , base ));
15481544 this .expect (TokenType .bracketR );
15491545 return Pair .make (this .finishNode (node ), true );
15501546 } else if (!noCalls && this .eat (TokenType .parenL )) {
@@ -1572,10 +1568,10 @@ protected Pair<Expression, Boolean> parseSubscript(
15721568 new ArrayList <>(),
15731569 exprList ,
15741570 optional ,
1575- isOnOptionalChain (optional , base ));
1571+ Chainable . isOnOptionalChain (optional , base ));
15761572 return Pair .make (this .finishNode (node ), true );
15771573 } else if (this .type == TokenType .backQuote ) {
1578- if (isOnOptionalChain (optional , base )) {
1574+ if (Chainable . isOnOptionalChain (optional , base )) {
15791575 this .raise (base , "An optional chain may not be used in a tagged template expression." );
15801576 }
15811577 TaggedTemplateExpression node =
@@ -1590,7 +1586,7 @@ protected Pair<Expression, Boolean> parseSubscript(
15901586 this .parseIdent (true ),
15911587 false ,
15921588 optional ,
1593- isOnOptionalChain (optional , base ));
1589+ Chainable . isOnOptionalChain (optional , base ));
15941590 return Pair .make (this .finishNode (node ), true );
15951591 } else {
15961592 return Pair .make (base , false );
@@ -1832,7 +1828,7 @@ protected Expression parseNew() {
18321828 Expression callee =
18331829 this .parseSubscripts (this .parseExprAtom (null ), innerStartPos , innerStartLoc , true );
18341830
1835- if (isOnOptionalChain (false , callee ))
1831+ if (Chainable . isOnOptionalChain (false , callee ))
18361832 this .raise (callee , "An optional chain may not be used in a `new` expression." );
18371833
18381834 return parseNewArguments (startLoc , callee );
@@ -2314,7 +2310,7 @@ protected INode toAssignable(INode node, boolean isBinding) {
23142310 }
23152311
23162312 if (node instanceof MemberExpression ) {
2317- if (isOnOptionalChain (false , (MemberExpression ) node ))
2313+ if (Chainable . isOnOptionalChain (false , (MemberExpression ) node ))
23182314 this .raise (node , "Invalid left-hand side in assignment" );
23192315 if (!isBinding ) return node ;
23202316 }
0 commit comments