@@ -628,7 +628,7 @@ export default class ExpressionParser extends LValParser {
628628 node . callee = base ;
629629 node . arguments = this . parseCallExpressionArguments ( tt . parenR , false ) ;
630630 node . optional = true ;
631- return this . finishNode ( node , "OptionalCallExpression" ) ;
631+ return this . finishCallExpression ( node , /* optional */ true ) ;
632632 } else {
633633 node . object = base ;
634634 node . property = this . parseIdentifier ( true ) ;
@@ -683,11 +683,7 @@ export default class ExpressionParser extends LValParser {
683683 base . type !== "Super" ,
684684 node ,
685685 ) ;
686- if ( ! state . optionalChainMember ) {
687- this . finishCallExpression ( node ) ;
688- } else {
689- this . finishOptionalCallExpression ( node ) ;
690- }
686+ this . finishCallExpression ( node , state . optionalChainMember ) ;
691687
692688 if ( state . maybeAsyncArrow && this . shouldParseAsyncArrow ( ) ) {
693689 state . stop = true ;
@@ -783,21 +779,10 @@ export default class ExpressionParser extends LValParser {
783779 ) ;
784780 }
785781
786- finishCallExpression ( node : N . CallExpression ) : N . CallExpression {
787- if ( node . callee . type === "Import" ) {
788- if ( node . arguments . length !== 1 ) {
789- this . raise ( node . start , "import() requires exactly one argument" ) ;
790- }
791-
792- const importArg = node . arguments [ 0 ] ;
793- if ( importArg && importArg . type === "SpreadElement" ) {
794- this . raise ( importArg . start , "... is not allowed in import()" ) ;
795- }
796- }
797- return this . finishNode ( node , "CallExpression" ) ;
798- }
799-
800- finishOptionalCallExpression ( node : N . CallExpression ) : N . CallExpression {
782+ finishCallExpression < T : N . CallExpression | N . OptionalCallExpression > (
783+ node : T ,
784+ optional : boolean ,
785+ ) : T {
801786 if ( node . callee . type === "Import" ) {
802787 if ( node . arguments . length !== 1 ) {
803788 this . raise ( node . start , "import() requires exactly one argument" ) ;
@@ -808,7 +793,10 @@ export default class ExpressionParser extends LValParser {
808793 this . raise ( importArg . start , "... is not allowed in import()" ) ;
809794 }
810795 }
811- return this . finishNode ( node , "OptionalCallExpression" ) ;
796+ return this . finishNode (
797+ node ,
798+ optional ? "OptionalCallExpression" : "CallExpression" ,
799+ ) ;
812800 }
813801
814802 parseCallExpressionArguments (
0 commit comments