@@ -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