Skip to content

Commit 0f8853a

Browse files
committed
Find references in projects in parallel
1 parent 3a849fc commit 0f8853a

File tree

1 file changed

+15
-10
lines changed

1 file changed

+15
-10
lines changed

language-server/src/dotty/tools/languageserver/DottyLanguageServer.scala

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -332,18 +332,23 @@ class DottyLanguageServer extends LanguageServer
332332

333333
val originalSymbol = Interactive.enclosingSourceSymbol(path)
334334
val symbolName = originalSymbol.name.sourceModuleName.toString
335-
val references =
336-
for { config <- projectsToInspect.toList
337-
remoteDriver = drivers(config)
338-
ctx = remoteDriver.currentCtx
339-
remoteDefinition = Interactive.localize(originalSymbol, driver, remoteDriver)
340-
trees = remoteDriver.sourceTreesContaining(symbolName)(ctx)
341-
reference <- Interactive.findTreesMatching(trees, includes, remoteDefinition)(ctx)
342-
} yield {
343-
reference
335+
val references = {
336+
// Collect the information necessary to look into each project separately: representation of
337+
// `originalSymbol` in this project, the context and correct Driver.
338+
val perProjectInfo = projectsToInspect.toList.map { config =>
339+
val remoteDriver = drivers(config)
340+
val ctx = remoteDriver.currentCtx
341+
val definition = Interactive.localize(originalSymbol, driver, remoteDriver)
342+
(remoteDriver, ctx, definition)
344343
}
345344

346-
references.flatMap(ref => location(ref.namePos, positionMapperFor(ref.source))).asJava
345+
perProjectInfo.par.flatMap { (remoteDriver, ctx, definition) =>
346+
val trees = remoteDriver.sourceTreesContaining(symbolName)(ctx)
347+
Interactive.findTreesMatching(trees, includes, definition)(ctx)
348+
}
349+
}.toList
350+
351+
references.flatMap(ref => location(ref.namePos, positionMapperFor(ref.source))).asJava
347352
}
348353

349354
override def rename(params: RenameParams) = computeAsync { cancelToken =>

0 commit comments

Comments
 (0)