@@ -451,7 +451,11 @@ namespace ts.codefix {
451451 }
452452
453453 return shouldReturn ? refactoredStmts . map ( s => getSynthesizedDeepClone ( s ) ) :
454- removeReturns ( refactoredStmts , prevArgName ! . identifier , transformer , seenReturnStatement ) ;
454+ removeReturns (
455+ refactoredStmts ,
456+ prevArgName === undefined ? undefined : prevArgName . identifier ,
457+ transformer ,
458+ seenReturnStatement ) ;
455459 }
456460 else {
457461 const innerRetStmts = getReturnStatementsWithPromiseHandlers ( createReturn ( funcBody ) ) ;
@@ -491,14 +495,19 @@ namespace ts.codefix {
491495 }
492496
493497
494- function removeReturns ( stmts : ReadonlyArray < Statement > , prevArgName : Identifier , transformer : Transformer , seenReturnStatement : boolean ) : ReadonlyArray < Statement > {
498+ function removeReturns ( stmts : ReadonlyArray < Statement > , prevArgName : Identifier | undefined , transformer : Transformer , seenReturnStatement : boolean ) : ReadonlyArray < Statement > {
495499 const ret : Statement [ ] = [ ] ;
496500 for ( const stmt of stmts ) {
497501 if ( isReturnStatement ( stmt ) ) {
498502 if ( stmt . expression ) {
499503 const possiblyAwaitedExpression = isPromiseReturningExpression ( stmt . expression , transformer . checker ) ? createAwait ( stmt . expression ) : stmt . expression ;
500- ret . push ( createVariableStatement ( /*modifiers*/ undefined ,
501- ( createVariableDeclarationList ( [ createVariableDeclaration ( prevArgName , /*type*/ undefined , possiblyAwaitedExpression ) ] , getFlagOfIdentifier ( prevArgName , transformer . constIdentifiers ) ) ) ) ) ;
504+ if ( prevArgName === undefined ) {
505+ ret . push ( createExpressionStatement ( possiblyAwaitedExpression ) ) ;
506+ }
507+ else {
508+ ret . push ( createVariableStatement ( /*modifiers*/ undefined ,
509+ ( createVariableDeclarationList ( [ createVariableDeclaration ( prevArgName , /*type*/ undefined , possiblyAwaitedExpression ) ] , getFlagOfIdentifier ( prevArgName , transformer . constIdentifiers ) ) ) ) ) ;
510+ }
502511 }
503512 }
504513 else {
@@ -507,7 +516,7 @@ namespace ts.codefix {
507516 }
508517
509518 // if block has no return statement, need to define prevArgName as undefined to prevent undeclared variables
510- if ( ! seenReturnStatement ) {
519+ if ( ! seenReturnStatement && prevArgName !== undefined ) {
511520 ret . push ( createVariableStatement ( /*modifiers*/ undefined ,
512521 ( createVariableDeclarationList ( [ createVariableDeclaration ( prevArgName , /*type*/ undefined , createIdentifier ( "undefined" ) ) ] , getFlagOfIdentifier ( prevArgName , transformer . constIdentifiers ) ) ) ) ) ;
513522 }
0 commit comments