Skip to content

Commit 981a34e

Browse files
authored
Merge pull request #14756 from rochala/package-completions-outside-import
Change completions filtering to now include package module classes
2 parents d9b3271 + f47c8c6 commit 981a34e

File tree

2 files changed

+24
-3
lines changed

2 files changed

+24
-3
lines changed

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -416,7 +416,7 @@ object Completion {
416416
// 1. The extension method is visible under a simple name, by being defined or inherited or imported in a scope enclosing the reference.
417417
val termCompleter = new Completer(Mode.Term, prefix, pos)
418418
val extMethodsInScope = termCompleter.scopeCompletions.toList.flatMap {
419-
case (name, denots) => denots.collect { case d: SymDenotation => (d.termRef, name.asTermName) }
419+
case (name, denots) => denots.collect { case d: SymDenotation if d.isTerm => (d.termRef, name.asTermName) }
420420
}
421421

422422
// 2. The extension method is a member of some given instance that is visible at the point of the reference.
@@ -467,8 +467,8 @@ object Completion {
467467
!sym.isPackageObject &&
468468
!sym.is(Artifact) &&
469469
(
470-
(mode.is(Mode.Term) && sym.isTerm)
471-
|| (mode.is(Mode.Type) && (sym.isType || sym.isStableMember))
470+
(mode.is(Mode.Term) && (sym.isTerm || sym.is(ModuleClass))
471+
|| (mode.is(Mode.Type) && (sym.isType || sym.isStableMember)))
472472
)
473473

474474
/** @param site The type to inspect.

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

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1224,4 +1224,25 @@ class CompletionTest {
12241224
|def foo(x: Bar[M]) = x.bar.ma${m1}"""
12251225
.withSource.completion(m1, expected)
12261226
}
1227+
1228+
@Test def packageCompletionsOutsideImport: Unit = {
1229+
val expected = Set(
1230+
("java", Module, "java"),
1231+
("javax", Module, "javax"),
1232+
)
1233+
code"""object Foo { ja${m1}"""
1234+
.withSource.completion(m1, expected)
1235+
}
1236+
1237+
@Test def topLevelPackagesCompletionsOutsideImport: Unit = {
1238+
val expected = Set(
1239+
("example", Module, "example"),
1240+
)
1241+
code"""package example:
1242+
| def foo = ""
1243+
|
1244+
|def main = exa${m1}"""
1245+
.withSource.completion(m1, expected)
1246+
}
1247+
12271248
}

0 commit comments

Comments
 (0)