MCPcopy Create free account
hub / github.com/microsoft/typescript-go / ResolveTypeReferenceDirective

Method ResolveTypeReferenceDirective

internal/module/resolver.go:225–268  ·  view source on GitHub ↗
(
	typeReferenceDirectiveName string,
	containingFile string,
	resolutionMode core.ResolutionMode,
	redirectedReference ResolvedProjectReference,
)

Source from the content-addressed store, hash-verified

223}
224
225func (r *Resolver) ResolveTypeReferenceDirective(
226 typeReferenceDirectiveName string,
227 containingFile string,
228 resolutionMode core.ResolutionMode,
229 redirectedReference ResolvedProjectReference,
230) (*ResolvedTypeReferenceDirective, []DiagAndArgs) {
231 containingDirectory := tspath.GetDirectoryPath(containingFile)
232 traceBuilder := r.newTraceBuilder()
233
234 fromInferredTypesContainingFile := strings.HasSuffix(containingFile, InferredTypesContainingFile)
235
236 cacheKey := typeRefDirectiveResolutionCacheKey{
237 containingDirectory: containingDirectory,
238 typeReferenceName: typeReferenceDirectiveName,
239 resolutionMode: resolutionMode,
240 redirectConfigName: getRedirectConfigName(redirectedReference),
241 fromInferredTypesContainingFile: fromInferredTypesContainingFile,
242 }
243
244 if traceBuilder == nil {
245 if cached, ok := r.typeRefDirectiveResolutionCache.Get(cacheKey); ok {
246 return cached, nil
247 }
248 }
249
250 compilerOptions := GetCompilerOptionsWithRedirect(r.compilerOptions, redirectedReference)
251
252 typeRoots, fromConfig := compilerOptions.GetEffectiveTypeRoots(r.host.GetCurrentDirectory())
253 if traceBuilder != nil {
254 traceBuilder.write(diagnostics.Resolving_type_reference_directive_0_containing_file_1_root_directory_2, typeReferenceDirectiveName, containingFile, strings.Join(typeRoots, ","))
255 traceBuilder.traceResolutionUsingProjectReference(redirectedReference)
256 }
257
258 state := newResolutionState(typeReferenceDirectiveName, containingDirectory, true /*isTypeReferenceDirective*/, resolutionMode, compilerOptions, redirectedReference, r, traceBuilder)
259 result := state.resolveTypeReferenceDirective(typeRoots, fromConfig, fromInferredTypesContainingFile)
260
261 if traceBuilder != nil {
262 traceBuilder.traceTypeReferenceDirectiveResult(typeReferenceDirectiveName, result)
263 }
264
265 r.typeRefDirectiveResolutionCache.Set(cacheKey, result)
266
267 return result, traceBuilder.getTraces()
268}
269
270func (r *Resolver) ResolveModuleName(moduleName string, containingFile string, resolutionMode core.ResolutionMode, redirectedReference ResolvedProjectReference) (*ResolvedModule, []DiagAndArgs) {
271 containingDirectory := tspath.GetDirectoryPath(containingFile)

Calls 14

newTraceBuilderMethod · 0.95
GetDirectoryPathFunction · 0.92
getRedirectConfigNameFunction · 0.85
newResolutionStateFunction · 0.85
GetEffectiveTypeRootsMethod · 0.80
getTracesMethod · 0.80
GetMethod · 0.65
GetCurrentDirectoryMethod · 0.65

Tested by

no test coverage detected