Skip to content

Commit eba580c

Browse files
committed
Fix completion with renaming imports
1 parent 1695d18 commit eba580c

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

compiler/src/dotty/tools/dotc/interactive/Interactive.scala

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -190,11 +190,17 @@ object Interactive {
190190
}
191191

192192
val (completionPos, prefix, termOnly, typeOnly, inImport) = path match {
193+
case (Thicket(name :: _ :: Nil)) :: (imp: Import) :: _ =>
194+
if (name.pos.contains(pos.pos))
195+
completionInfo(name.asInstanceOf[tpd.Tree] :: Nil, /* inImport = */ true)
196+
else completionInfo(path, /* inImport = */ true)
197+
193198
case (imp: Import) :: _ =>
194199
imp.selectors.find(_.pos.contains(pos.pos)) match {
195200
case None => (imp.expr.pos.point, "", false, false, true)
196201
case Some(sel) => completionInfo(sel.asInstanceOf[tpd.Tree] :: Nil, /* inImport = */ true)
197202
}
203+
198204
case other =>
199205
completionInfo(other, /* inImport = */ false)
200206
}
@@ -313,9 +319,10 @@ object Interactive {
313319
}
314320

315321
path match {
316-
case (sel @ Select(qual, _)) :: _ => getMemberCompletions(qual)
317-
case (imp @ Import(expr, _)) :: _ => getMemberCompletions(expr)
318-
case _ => getScopeCompletions(ctx)
322+
case Select(qual, _) :: _ => getMemberCompletions(qual)
323+
case Import(expr, _) :: _ => getMemberCompletions(expr)
324+
case (_: Thicket) :: Import(expr, _) :: _ => getMemberCompletions(expr)
325+
case _ => getScopeCompletions(ctx)
319326
}
320327

321328
val completionList = completions.toList

language-server/test/dotty/tools/languageserver/CompletionTest.scala

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,4 +138,9 @@ class CompletionTest {
138138
}""".withSource
139139
.completion(m1, Set(("FileDescriptor", Module, "java.io.FileDescriptor")))
140140
}
141+
142+
@Test def importRename: Unit = {
143+
code"""import java.io.{FileDesc${m1} => Foo}""".withSource
144+
.completion(m1, Set(("FileDescriptor", Class, "Object{...}")))
145+
}
141146
}

0 commit comments

Comments
 (0)