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