Skip to content

Commit 8b3432e

Browse files
committed
Fix completion with renaming imports
1 parent 7590dce commit 8b3432e

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
}
@@ -312,9 +318,10 @@ object Interactive {
312318
}
313319

314320
path match {
315-
case (sel @ Select(qual, _)) :: _ => getMemberCompletions(qual)
316-
case (imp @ Import(expr, _)) :: _ => getMemberCompletions(expr)
317-
case _ => getScopeCompletions(ctx)
321+
case Select(qual, _) :: _ => getMemberCompletions(qual)
322+
case Import(expr, _) :: _ => getMemberCompletions(expr)
323+
case (_: Thicket) :: Import(expr, _) :: _ => getMemberCompletions(expr)
324+
case _ => getScopeCompletions(ctx)
318325
}
319326

320327
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
@@ -131,4 +131,9 @@ class CompletionTest {
131131
code"""import java.lang.System.ou${m1}""".withSource
132132
.completion(m1, Set(("out", Field, "java.io.PrintStream")))
133133
}
134+
135+
@Test def importRename: Unit = {
136+
code"""import java.io.{FileDesc${m1} => Foo}""".withSource
137+
.completion(m1, Set(("FileDescriptor", Class, "Object{...}")))
138+
}
134139
}

0 commit comments

Comments
 (0)