@@ -330,18 +330,23 @@ class DottyLanguageServer extends LanguageServer
330
330
331
331
val originalSymbol = Interactive .enclosingSourceSymbol(path)
332
332
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)
342
341
}
343
342
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
345
350
}
346
351
347
352
override def rename (params : RenameParams ) = computeAsync { cancelToken =>
0 commit comments