@@ -2120,7 +2120,11 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
2120
2120
}
2121
2121
2122
2122
function getResolvedTypeReferenceDirectiveFromTypeReferenceDirective ( typeRef : FileReference , sourceFile : SourceFile ) {
2123
- return getResolvedTypeReferenceDirective ( sourceFile , typeRef . fileName , typeRef . resolutionMode || sourceFile . impliedNodeFormat ) ;
2123
+ return getResolvedTypeReferenceDirective (
2124
+ sourceFile ,
2125
+ typeRef . fileName ,
2126
+ getModeForTypeReferenceDirectiveInFile ( typeRef , sourceFile ) ,
2127
+ ) ;
2124
2128
}
2125
2129
2126
2130
function forEachResolvedModule (
@@ -2648,11 +2652,12 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
2648
2652
const moduleNames = getModuleNames ( newSourceFile ) ;
2649
2653
const resolutions = resolveModuleNamesReusingOldState ( moduleNames , newSourceFile ) ;
2650
2654
( resolvedModulesProcessing ??= new Map ( ) ) . set ( newSourceFile . path , resolutions ) ;
2655
+ const optionsForFile = getCompilerOptionsForFile ( newSourceFile ) ;
2651
2656
// ensure that module resolution results are still correct
2652
2657
const resolutionsChanged = hasChangesInResolutions (
2653
2658
moduleNames ,
2654
2659
resolutions ,
2655
- name => oldProgram . getResolvedModule ( newSourceFile , name . text , getModeForUsageLocation ( newSourceFile , name ) ) ,
2660
+ name => oldProgram . getResolvedModule ( newSourceFile , name . text , getModeForUsageLocationWorker ( newSourceFile , name , optionsForFile ) ) ,
2656
2661
moduleResolutionIsEqualTo ,
2657
2662
) ;
2658
2663
if ( resolutionsChanged ) structureIsReused = StructureIsReused . SafeModules ;
@@ -2663,7 +2668,12 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
2663
2668
const typeReferenceResolutionsChanged = hasChangesInResolutions (
2664
2669
typesReferenceDirectives ,
2665
2670
typeReferenceResolutions ,
2666
- name => oldProgram . getResolvedTypeReferenceDirective ( newSourceFile , getTypeReferenceResolutionName ( name ) , getModeForFileReference ( name , newSourceFile . impliedNodeFormat ) ) ,
2671
+ name =>
2672
+ oldProgram . getResolvedTypeReferenceDirective (
2673
+ newSourceFile ,
2674
+ getTypeReferenceResolutionName ( name ) ,
2675
+ getModeForTypeReferenceDirectiveInFile ( name , newSourceFile ) ,
2676
+ ) ,
2667
2677
typeDirectiveIsEqualTo ,
2668
2678
) ;
2669
2679
if ( typeReferenceResolutionsChanged ) structureIsReused = StructureIsReused . SafeModules ;
@@ -4044,8 +4054,8 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
4044
4054
const resolvedTypeReferenceDirective = resolutions [ index ] ;
4045
4055
// store resolved type directive on the file
4046
4056
const fileName = ref . fileName ;
4047
- resolutionsInFile . set ( fileName , getModeForFileReference ( ref , file . impliedNodeFormat ) , resolvedTypeReferenceDirective ) ;
4048
- const mode = ref . resolutionMode || getDefaultResolutionModeForFile ( file ) ;
4057
+ const mode = getModeForTypeReferenceDirectiveInFile ( ref , file ) ;
4058
+ resolutionsInFile . set ( fileName , mode , resolvedTypeReferenceDirective ) ;
4049
4059
processTypeReferenceDirective ( fileName , mode , resolvedTypeReferenceDirective , { kind : FileIncludeKind . TypeReferenceDirective , file : file . path , index } ) ;
4050
4060
}
4051
4061
}
@@ -5224,6 +5234,10 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
5224
5234
function shouldTransformImportCall ( sourceFile : SourceFile ) : boolean {
5225
5235
return shouldTransformImportCallWorker ( sourceFile , getCompilerOptionsForFile ( sourceFile ) ) ;
5226
5236
}
5237
+
5238
+ function getModeForTypeReferenceDirectiveInFile ( ref : FileReference , sourceFile : SourceFile ) {
5239
+ return ref . resolutionMode || getDefaultResolutionModeForFile ( sourceFile ) ;
5240
+ }
5227
5241
}
5228
5242
5229
5243
function shouldTransformImportCallWorker ( sourceFile : Pick < SourceFile , "fileName" | "impliedNodeFormat" | "packageJsonScope" > , options : CompilerOptions ) : boolean {
0 commit comments