diff --git a/src/services/findAllReferences.ts b/src/services/findAllReferences.ts index 63cdaa6b1a..b917c426b7 100644 --- a/src/services/findAllReferences.ts +++ b/src/services/findAllReferences.ts @@ -476,6 +476,8 @@ namespace ts.FindAllReferences.Core { */ readonly markSeenReExportRHS = nodeSeenTracker(); + private readonly includedSourceFiles: Map; + constructor( readonly sourceFiles: ReadonlyArray, /** True if we're searching for constructor references. */ @@ -484,7 +486,13 @@ namespace ts.FindAllReferences.Core { readonly cancellationToken: CancellationToken, readonly searchMeaning: SemanticMeaning, readonly options: Options, - private readonly result: Push) {} + private readonly result: Push) { + this.includedSourceFiles = arrayToSet(sourceFiles, s => s.fileName); + } + + includesSourceFile(sourceFile: SourceFile): boolean { + return this.includedSourceFiles.has(sourceFile.fileName); + } private importTracker: ImportTracker | undefined; /** Gets every place to look for references of an exported symbols. See `ImportsResult` in `importTracker.ts` for more documentation. */ @@ -586,7 +594,10 @@ namespace ts.FindAllReferences.Core { // Go to the symbol we imported from and find references for it. function searchForImportedSymbol(symbol: Symbol, state: State): void { for (const declaration of symbol.declarations) { - getReferencesInSourceFile(declaration.getSourceFile(), state.createSearch(declaration, symbol, ImportExport.Import), state); + const exportingFile = declaration.getSourceFile(); + if (state.includesSourceFile(exportingFile)) { + getReferencesInSourceFile(exportingFile, state.createSearch(declaration, symbol, ImportExport.Import), state); + } } } diff --git a/tests/cases/fourslash/documentHighlights_filesToSearch.ts b/tests/cases/fourslash/documentHighlights_filesToSearch.ts new file mode 100644 index 0000000000..ae889be528 --- /dev/null +++ b/tests/cases/fourslash/documentHighlights_filesToSearch.ts @@ -0,0 +1,11 @@ +/// + +// @Filename: /a.ts +////export const [|x|] = 0; + +// @Filename: /b.ts +////import { [|x|] } from "./a"; + +const [r0, r1] = test.ranges(); +verify.documentHighlightsOf(r0, [r0], { filesToSearch: [r0.fileName] }); +verify.documentHighlightsOf(r1, [r1], { filesToSearch: [r1.fileName] });