@@ -39,14 +39,20 @@ namespace ts.codefix {
39
39
} ) ;
40
40
41
41
function getInfo ( sourceFile : SourceFile , checker : TypeChecker , pos : number ) : Info | undefined {
42
- const returnTypeNode = getReturnTypeNode ( sourceFile , pos ) ;
42
+ if ( isInJSFile ( sourceFile ) ) {
43
+ return undefined ;
44
+ }
45
+
46
+ const token = getTokenAtPosition ( sourceFile , pos ) ;
47
+ const func = findAncestor ( token , isFunctionLikeDeclaration ) ;
48
+ const returnTypeNode = func ?. type ;
43
49
if ( ! returnTypeNode ) {
44
50
return undefined ;
45
51
}
46
52
47
53
const returnType = checker . getTypeFromTypeNode ( returnTypeNode ) ;
48
54
const promisedType = checker . getAwaitedType ( returnType ) || checker . getVoidType ( ) ;
49
- const promisedTypeNode = checker . typeToTypeNode ( promisedType ) ;
55
+ const promisedTypeNode = checker . typeToTypeNode ( promisedType , /*enclosingDeclaration*/ returnTypeNode , /*flags*/ undefined ) ;
50
56
if ( promisedTypeNode ) {
51
57
return { returnTypeNode, returnType, promisedTypeNode, promisedType } ;
52
58
}
@@ -55,16 +61,4 @@ namespace ts.codefix {
55
61
function doChange ( changes : textChanges . ChangeTracker , sourceFile : SourceFile , returnTypeNode : TypeNode , promisedTypeNode : TypeNode ) : void {
56
62
changes . replaceNode ( sourceFile , returnTypeNode , createTypeReferenceNode ( "Promise" , [ promisedTypeNode ] ) ) ;
57
63
}
58
-
59
- function getReturnTypeNode ( sourceFile : SourceFile , pos : number ) : TypeNode | undefined {
60
- if ( isInJSFile ( sourceFile ) ) {
61
- return undefined ;
62
- }
63
-
64
- const token = getTokenAtPosition ( sourceFile , pos ) ;
65
- const parent = findAncestor ( token , isFunctionLikeDeclaration ) ;
66
- if ( parent ?. type ) {
67
- return parent . type ;
68
- }
69
- }
70
64
}
0 commit comments