Skip to content

Commit ace5092

Browse files
committed
Fix completion without prefix
When the user writes `qualifier.<tab>`, we get the tree corresponding to `qualifier.<error>`. When encountering the error, we were not doing any completion, but we should consider both terms and types in this context.
1 parent 1e82eb0 commit ace5092

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ object Completion {
4545
private def completionMode(path: List[Tree], pos: SourcePosition): Mode = {
4646
path match {
4747
case (ref: RefTree) :: _ =>
48-
if (ref.name == nme.ERROR) Mode.None
48+
if (ref.name == nme.ERROR) Mode.Term | Mode.Type
4949
else if (ref.name.isTermName) Mode.Term
5050
else if (ref.name.isTypeName) Mode.Type
5151
else Mode.None
@@ -301,7 +301,7 @@ object Completion {
301301
val Type: Mode = new Mode(2)
302302

303303
/** Both term and type symbols are allowed */
304-
val Import: Mode = Term | Type
304+
val Import: Mode = new Mode(4) | Term | Type
305305
}
306306

307307
}

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,4 +166,13 @@ class CompletionTest {
166166
|}""".withSource
167167
.completion(m1, Set())
168168
}
169+
170+
@Test def completeNoPrefix: Unit = {
171+
code"""class Foo { def foo = 0 }
172+
|object Bar {
173+
| val foo = new Foo
174+
| foo.${m1}
175+
|}""".withSource
176+
.completion(m1, results => assertTrue(results.nonEmpty))
177+
}
169178
}

0 commit comments

Comments
 (0)