@@ -372,7 +372,7 @@ namespace ts.codefix {
372
372
// the identifier is empty when the handler (.then()) ignores the argument - In this situation we do not need to save the result of the promise returning call
373
373
const originalNodeParent = node . original ? node . original . parent : node . parent ;
374
374
if ( prevArgName && ! shouldReturn && ( ! originalNodeParent || isPropertyAccessExpression ( originalNodeParent ) ) ) {
375
- return createTransformedStatement ( prevArgName , createAwait ( node ) , transformer ) . concat ( ) ; // hack to make the types match
375
+ return createTransformedStatement ( prevArgName , createAwait ( node ) , transformer ) ;
376
376
}
377
377
else if ( ! prevArgName && ! shouldReturn && ( ! originalNodeParent || isPropertyAccessExpression ( originalNodeParent ) ) ) {
378
378
return [ createStatement ( createAwait ( node ) ) ] ;
@@ -381,7 +381,7 @@ namespace ts.codefix {
381
381
return [ createReturn ( getSynthesizedDeepClone ( node ) ) ] ;
382
382
}
383
383
384
- function createTransformedStatement ( prevArgName : SynthIdentifier | undefined , rightHandSide : Expression , transformer : Transformer ) : NodeArray < Statement > {
384
+ function createTransformedStatement ( prevArgName : SynthIdentifier | undefined , rightHandSide : Expression , transformer : Transformer ) : MutableNodeArray < Statement > {
385
385
if ( ! prevArgName || prevArgName . identifier . text . length === 0 ) {
386
386
// if there's no argName to assign to, there still might be side effects
387
387
return createNodeArray ( [ createStatement ( rightHandSide ) ] ) ;
@@ -405,7 +405,10 @@ namespace ts.codefix {
405
405
// do not produce a transformed statement for a null argument
406
406
break ;
407
407
case SyntaxKind . Identifier : // identifier includes undefined
408
- if ( ! argName ) break ;
408
+ if ( ! argName ) {
409
+ // undefined was argument passed to promise handler
410
+ break ;
411
+ }
409
412
410
413
const synthCall = createCall ( getSynthesizedDeepClone ( func ) as Identifier , /*typeArguments*/ undefined , argName ? [ argName . identifier ] : [ ] ) ;
411
414
if ( shouldReturn ) {
@@ -533,7 +536,7 @@ namespace ts.codefix {
533
536
return innerCbBody ;
534
537
}
535
538
536
- function getArgName ( funcNode : Node , transformer : Transformer ) : SynthIdentifier | undefined {
539
+ function getArgName ( funcNode : Expression , transformer : Transformer ) : SynthIdentifier | undefined {
537
540
538
541
const numberOfAssignmentsOriginal = 0 ;
539
542
const types : Type [ ] = [ ] ;
@@ -543,20 +546,21 @@ namespace ts.codefix {
543
546
if ( isFunctionLikeDeclaration ( funcNode ) ) {
544
547
if ( funcNode . parameters . length > 0 ) {
545
548
const param = funcNode . parameters [ 0 ] . name as Identifier ;
546
- name = getMapEntryIfExists ( param ) ;
549
+ name = getMapEntryOrDefault ( param ) ;
547
550
}
548
551
}
549
552
else if ( isIdentifier ( funcNode ) ) {
550
- name = getMapEntryIfExists ( funcNode ) ;
553
+ name = getMapEntryOrDefault ( funcNode ) ;
551
554
}
552
555
553
- if ( ! name || name . identifier === undefined || name . identifier . text === "undefined" ) {
556
+ // return undefined argName when arg is null or undefined
557
+ if ( ! name || name . identifier . text === "undefined" ) {
554
558
return undefined ;
555
559
}
556
560
557
561
return name ;
558
562
559
- function getMapEntryIfExists ( identifier : Identifier ) : SynthIdentifier {
563
+ function getMapEntryOrDefault ( identifier : Identifier ) : SynthIdentifier {
560
564
const originalNode = getOriginalNode ( identifier ) ;
561
565
const symbol = getSymbol ( originalNode ) ;
562
566
0 commit comments