@@ -332,18 +332,23 @@ class DottyLanguageServer extends LanguageServer
332
332
333
333
val originalSymbol = Interactive .enclosingSourceSymbol(path)
334
334
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)
344
343
}
345
344
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
347
352
}
348
353
349
354
override def rename (params : RenameParams ) = computeAsync { cancelToken =>
0 commit comments