Skip to content

Commit d48548e

Browse files
committed
Find references in projects in parallel
1 parent 7413dd6 commit d48548e

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
@@ -330,18 +330,23 @@ class DottyLanguageServer extends LanguageServer
330330

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

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

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

0 commit comments

Comments
 (0)