refactor(typert): track forwarding visits without a delimiter

This commit is contained in:
creatixchu
2026-09-08 20:04:09 +08:00
parent b72919827a
commit 606b85cd58
+5 -4
View File
@@ -888,15 +888,16 @@ class FaceAnalyzer {
symbol: ts.Symbol,
from: PackageRegistration,
): PackageImport | undefined {
const visited = new Set<string>()
const visited = new Map<string, Set<string>>()
const walk = (sourceFile: ts.SourceFile, specifier: string, name: string): PackageImport | undefined => {
const module = moduleIdentity(specifier)
if (module !== undefined) return { module, name }
const resolvedPath = this.resolveImport(specifier, sourceFile.fileName)
if (resolvedPath === undefined || !isWithin(resolvedPath, from.root)) return undefined
const key = `${resolvedPath}\0${name}`
if (visited.has(key)) return undefined
visited.add(key)
const names = visited.get(resolvedPath)
if (names?.has(name)) return undefined
if (names === undefined) visited.set(resolvedPath, new Set([name]))
else names.add(name)
const forward = this.sourceFiles.get(resolvedPath) as ts.SourceFile
for (const edge of this.forwardedExports(forward, name, symbol)) {
const found = walk(forward, edge.specifier, edge.name)