@@ -226,18 +226,8 @@ namespace ts.codefix {
226
226
const scriptTarget = getEmitScriptTarget ( context . program . getCompilerOptions ( ) ) ;
227
227
const checker = context . program . getTypeChecker ( ) ;
228
228
const tracker = getNoopSymbolTrackerWithResolver ( context ) ;
229
- const types = map ( args , arg => {
230
- const type = checker . getBaseTypeOfLiteralType ( checker . getTypeAtLocation ( arg ) ) ;
231
- const typeNode = checker . typeToTypeNode ( type , contextNode , /*flags*/ undefined , tracker ) ;
232
- if ( typeNode ?. kind === SyntaxKind . ImportType ) {
233
- const importableReference = tryGetAutoImportableReferenceFromImportTypeNode ( typeNode , type , scriptTarget ) ;
234
- if ( importableReference ) {
235
- importSymbols ( importAdder , importableReference . symbols ) ;
236
- return importableReference . typeReference ;
237
- }
238
- }
239
- return typeNode ;
240
- } ) ;
229
+ const types = map ( args , arg =>
230
+ typeToAutoImportableTypeNode ( checker , importAdder , checker . getBaseTypeOfLiteralType ( checker . getTypeAtLocation ( arg ) ) , contextNode , scriptTarget , /*flags*/ undefined , tracker ) ) ;
241
231
const names = map ( args , arg =>
242
232
isIdentifier ( arg ) ? arg . text : isPropertyAccessExpression ( arg ) && isIdentifier ( arg . name ) ? arg . name . text : undefined ) ;
243
233
const contextualType = checker . getContextualType ( call ) ;
@@ -255,6 +245,18 @@ namespace ts.codefix {
255
245
body ? createStubbedMethodBody ( context . preferences ) : undefined ) ;
256
246
}
257
247
248
+ export function typeToAutoImportableTypeNode ( checker : TypeChecker , importAdder : ImportAdder , type : Type , contextNode : Node , scriptTarget : ScriptTarget , flags ?: NodeBuilderFlags , tracker ?: SymbolTracker ) : TypeNode | undefined {
249
+ const typeNode = checker . typeToTypeNode ( type , contextNode , flags , tracker ) ;
250
+ if ( typeNode && isImportTypeNode ( typeNode ) ) {
251
+ const importableReference = tryGetAutoImportableReferenceFromImportTypeNode ( typeNode , type , scriptTarget ) ;
252
+ if ( importableReference ) {
253
+ importSymbols ( importAdder , importableReference . symbols ) ;
254
+ return importableReference . typeReference ;
255
+ }
256
+ }
257
+ return typeNode ;
258
+ }
259
+
258
260
function createDummyParameters ( argCount : number , names : ( string | undefined ) [ ] | undefined , types : ( TypeNode | undefined ) [ ] | undefined , minArgumentCount : number | undefined , inJs : boolean ) : ParameterDeclaration [ ] {
259
261
const parameters : ParameterDeclaration [ ] = [ ] ;
260
262
for ( let i = 0 ; i < argCount ; i ++ ) {
@@ -456,7 +458,7 @@ namespace ts.codefix {
456
458
return createQualifiedName ( replaceFirstIdentifierOfEntityName ( name . left , newIdentifier ) , name . right ) ;
457
459
}
458
460
459
- function importSymbols ( importAdder : ImportAdder , symbols : readonly Symbol [ ] ) {
461
+ export function importSymbols ( importAdder : ImportAdder , symbols : readonly Symbol [ ] ) {
460
462
symbols . forEach ( s => importAdder . addImportFromExportedSymbol ( s , /*usageIsTypeOnly*/ true ) ) ;
461
463
}
462
464
}
0 commit comments