@@ -514,19 +514,23 @@ export class Parser extends DiagnosticEmitter {
514
514
if ( signature ) {
515
515
if ( isInnerParenthesized ) {
516
516
if ( ! tn . skip ( Token . CloseParen ) ) {
517
- this . error (
518
- DiagnosticCode . _0_expected ,
519
- tn . range ( ) , ")"
520
- ) ;
517
+ if ( ! suppressErrors ) {
518
+ this . error (
519
+ DiagnosticCode . _0_expected ,
520
+ tn . range ( ) , ")"
521
+ ) ;
522
+ }
521
523
return null ;
522
524
}
523
525
}
524
526
type = signature ;
525
527
} else if ( isInnerParenthesized || this . tryParseSignatureIsSignature ) {
526
- this . error (
527
- DiagnosticCode . Unexpected_token ,
528
- tn . range ( )
529
- ) ;
528
+ if ( ! suppressErrors ) {
529
+ this . error (
530
+ DiagnosticCode . Unexpected_token ,
531
+ tn . range ( )
532
+ ) ;
533
+ }
530
534
return null ;
531
535
// Type (',' Type)* ')'
532
536
} else if ( acceptParenthesized ) {
@@ -545,10 +549,12 @@ export class Parser extends DiagnosticEmitter {
545
549
type . range . start = startPos ;
546
550
type . range . end = tn . pos ;
547
551
} else {
548
- this . error (
549
- DiagnosticCode . Unexpected_token ,
550
- tn . range ( )
551
- ) ;
552
+ if ( ! suppressErrors ) {
553
+ this . error (
554
+ DiagnosticCode . Unexpected_token ,
555
+ tn . range ( )
556
+ ) ;
557
+ }
552
558
return null ;
553
559
}
554
560
@@ -3780,10 +3786,15 @@ export class Parser extends DiagnosticEmitter {
3780
3786
3781
3787
// if we got here, check for arrow
3782
3788
case Token . CloseParen : {
3783
- if (
3784
- ! tn . skip ( Token . Colon ) &&
3785
- ! tn . skip ( Token . Equals_GreaterThan )
3786
- ) {
3789
+ // `Identifier):Type =>` is function expression
3790
+ if ( tn . skip ( Token . Colon ) ) {
3791
+ let type = this . parseType ( tn , true , true ) ;
3792
+ if ( type == null ) {
3793
+ again = false ;
3794
+ break ;
3795
+ }
3796
+ }
3797
+ if ( ! tn . skip ( Token . Equals_GreaterThan ) ) {
3787
3798
again = false ;
3788
3799
break ;
3789
3800
}
0 commit comments