@@ -251,18 +251,40 @@ class DottyLanguageServer extends LanguageServer
251
251
val enclTree = Interactive .enclosingTree(driver.openedTrees(uri), pos)
252
252
val sym = Interactive .sourceSymbol(enclTree.symbol)
253
253
254
- if (sym == NoSymbol ) Nil .asJava
255
- else {
256
- val (trees, include) =
257
- if (enclTree.isInstanceOf [MemberDef ])
258
- (driver.allTreesContaining(sym.name.sourceModuleName.toString),
259
- Include .overriding | Include .overridden)
260
- else
261
- (SourceTree .fromSymbol(sym.topLevelClass.asClass).toList,
262
- Include .overriding)
263
- val defs = Interactive .namedTrees(trees, include, sym)
264
- defs.map(d => location(d.namePos)).asJava
265
- }
254
+ val defs =
255
+ if (sym == NoSymbol ) Nil
256
+ else enclTree match {
257
+ case imp : Import =>
258
+ def lookup (name : Name ): Symbol = {
259
+ imp.expr.tpe.member(name).symbol
260
+ }
261
+ val importedSyms = imp.selectors.flatMap {
262
+ case id : Ident if id.pos.contains(pos.pos) =>
263
+ lookup(id.name) :: lookup(id.name.toTypeName) :: Nil
264
+ case thicket @ Thicket ((id : Ident ) :: (_ : Ident ) :: Nil ) if thicket.pos.contains(pos.pos) =>
265
+ lookup(id.name) :: lookup(id.name.toTypeName) :: Nil
266
+ case _ =>
267
+ Nil
268
+ }
269
+
270
+ importedSyms.flatMap { sym =>
271
+ val trees = driver.allTreesContaining(sym.name.sourceModuleName.toString)
272
+ val defSymbol = if (sym is Flags .ModuleVal ) sym.moduleClass else sym
273
+ Interactive .namedTrees(trees, Include .overriding, defSymbol)
274
+ }
275
+
276
+ case _ =>
277
+ val (trees, include) =
278
+ if (enclTree.isInstanceOf [MemberDef ])
279
+ (driver.allTreesContaining(sym.name.sourceModuleName.toString),
280
+ Include .overriding | Include .overridden)
281
+ else
282
+ (SourceTree .fromSymbol(sym.topLevelClass.asClass).toList,
283
+ Include .overriding)
284
+ Interactive .namedTrees(trees, include, sym)
285
+ }
286
+
287
+ defs.map(d => location(d.namePos)).asJava
266
288
}
267
289
268
290
override def references (params : ReferenceParams ) = computeAsync { cancelToken =>
0 commit comments