@@ -1243,11 +1243,11 @@ export function isReferenceFileLocation(location: ReferenceFileLocation | Synthe
1243
1243
export function getReferencedFileLocation ( program : Program , ref : ReferencedFile ) : ReferenceFileLocation | SyntheticReferenceFileLocation {
1244
1244
const file = Debug . checkDefined ( program . getSourceFileByPath ( ref . file ) ) ;
1245
1245
const { kind, index } = ref ;
1246
- let pos : number | undefined , end : number | undefined , packageId : PackageId | undefined , resolutionMode : FileReference [ "resolutionMode" ] | undefined ;
1246
+ let pos : number | undefined , end : number | undefined , packageId : PackageId | undefined ;
1247
1247
switch ( kind ) {
1248
1248
case FileIncludeKind . Import :
1249
1249
const importLiteral = getModuleNameStringLiteralAt ( file , index ) ;
1250
- packageId = program . getResolvedModule ( file , importLiteral . text , program . getModeForUsageLocation ( file , importLiteral ) ) ?. resolvedModule ?. packageId ;
1250
+ packageId = program . getResolvedModuleFromModuleSpecifier ( importLiteral , file ) ?. resolvedModule ?. packageId ;
1251
1251
if ( importLiteral . pos === - 1 ) return { file, packageId, text : importLiteral . text } ;
1252
1252
pos = skipTrivia ( file . text , importLiteral . pos ) ;
1253
1253
end = importLiteral . end ;
@@ -1256,8 +1256,8 @@ export function getReferencedFileLocation(program: Program, ref: ReferencedFile)
1256
1256
( { pos, end } = file . referencedFiles [ index ] ) ;
1257
1257
break ;
1258
1258
case FileIncludeKind . TypeReferenceDirective :
1259
- ( { pos, end, resolutionMode } = file . typeReferenceDirectives [ index ] ) ;
1260
- packageId = program . getResolvedTypeReferenceDirective ( file , toFileNameLowerCase ( file . typeReferenceDirectives [ index ] . fileName ) , resolutionMode || file . impliedNodeFormat ) ?. resolvedTypeReferenceDirective ?. packageId ;
1259
+ ( { pos, end } = file . typeReferenceDirectives [ index ] ) ;
1260
+ packageId = program . getResolvedTypeReferenceDirectiveFromTypeReferenceDirective ( file . typeReferenceDirectives [ index ] , file ) ?. resolvedTypeReferenceDirective ?. packageId ;
1261
1261
break ;
1262
1262
case FileIncludeKind . LibReferenceDirective :
1263
1263
( { pos, end } = file . libReferenceDirectives [ index ] ) ;
@@ -1930,6 +1930,7 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
1930
1930
resolvedLibProcessing = undefined ;
1931
1931
resolvedModulesProcessing = undefined ;
1932
1932
resolvedTypeReferenceDirectiveNamesProcessing = undefined ;
1933
+ resolvedTypeReferenceDirectives = undefined ! ;
1933
1934
1934
1935
const program : Program = {
1935
1936
getRootFileNames : ( ) => rootNames ,
@@ -1961,7 +1962,6 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
1961
1962
getInstantiationCount : ( ) => getTypeChecker ( ) . getInstantiationCount ( ) ,
1962
1963
getRelationCacheSizes : ( ) => getTypeChecker ( ) . getRelationCacheSizes ( ) ,
1963
1964
getFileProcessingDiagnostics : ( ) => fileProcessingDiagnostics ,
1964
- getResolvedTypeReferenceDirectives : ( ) => resolvedTypeReferenceDirectives ,
1965
1965
getAutomaticTypeDirectiveNames : ( ) => automaticTypeDirectiveNames ! ,
1966
1966
getAutomaticTypeDirectiveResolutions : ( ) => automaticTypeDirectiveResolutions ,
1967
1967
isSourceFileFromExternalLibrary,
@@ -1980,6 +1980,7 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
1980
1980
getResolvedModule,
1981
1981
getResolvedModuleFromModuleSpecifier,
1982
1982
getResolvedTypeReferenceDirective,
1983
+ getResolvedTypeReferenceDirectiveFromTypeReferenceDirective,
1983
1984
forEachResolvedModule,
1984
1985
forEachResolvedTypeReferenceDirective,
1985
1986
getCurrentPackagesMap : ( ) => packageMap ,
@@ -2076,8 +2077,8 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
2076
2077
return resolvedModules ?. get ( file . path ) ?. get ( moduleName , mode ) ;
2077
2078
}
2078
2079
2079
- function getResolvedModuleFromModuleSpecifier ( moduleSpecifier : StringLiteralLike ) : ResolvedModuleWithFailedLookupLocations | undefined {
2080
- const sourceFile = getSourceFileOfNode ( moduleSpecifier ) ;
2080
+ function getResolvedModuleFromModuleSpecifier ( moduleSpecifier : StringLiteralLike , sourceFile ?: SourceFile ) : ResolvedModuleWithFailedLookupLocations | undefined {
2081
+ sourceFile ?? = getSourceFileOfNode ( moduleSpecifier ) ;
2081
2082
Debug . assertIsDefined ( sourceFile , "`moduleSpecifier` must have a `SourceFile` ancestor. Use `program.getResolvedModule` instead to provide the containing file and resolution mode." ) ;
2082
2083
return getResolvedModule ( sourceFile , moduleSpecifier . text , getModeForUsageLocation ( sourceFile , moduleSpecifier ) ) ;
2083
2084
}
@@ -2086,6 +2087,10 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
2086
2087
return resolvedTypeReferenceDirectiveNames ?. get ( file . path ) ?. get ( typeDirectiveName , mode ) ;
2087
2088
}
2088
2089
2090
+ function getResolvedTypeReferenceDirectiveFromTypeReferenceDirective ( typeRef : FileReference , sourceFile : SourceFile ) {
2091
+ return getResolvedTypeReferenceDirective ( sourceFile , toFileNameLowerCase ( typeRef . fileName ) , typeRef . resolutionMode || sourceFile . impliedNodeFormat ) ;
2092
+ }
2093
+
2089
2094
function forEachResolvedModule (
2090
2095
callback : ( resolution : ResolvedModuleWithFailedLookupLocations , moduleName : string , mode : ResolutionMode , filePath : Path ) => void ,
2091
2096
file ?: SourceFile ,
@@ -2718,7 +2723,6 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
2718
2723
files = newSourceFiles ;
2719
2724
fileReasons = oldProgram . getFileIncludeReasons ( ) ;
2720
2725
fileProcessingDiagnostics = oldProgram . getFileProcessingDiagnostics ( ) ;
2721
- resolvedTypeReferenceDirectives = oldProgram . getResolvedTypeReferenceDirectives ( ) ;
2722
2726
automaticTypeDirectiveNames = oldProgram . getAutomaticTypeDirectiveNames ( ) ;
2723
2727
automaticTypeDirectiveResolutions = oldProgram . getAutomaticTypeDirectiveResolutions ( ) ;
2724
2728
0 commit comments