Skip to content

Commit

Permalink
REPL: tab completion: test case + code improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
SethTisue committed Nov 24, 2020
1 parent d42157d commit 945e296
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 1 deletion.
5 changes: 4 additions & 1 deletion src/interactive/scala/tools/nsc/interactive/Global.scala
Original file line number Diff line number Diff line change
Expand Up @@ -1076,6 +1076,9 @@ class Global(settings: Settings, _reporter: Reporter, projectName: String = "")
//if (debugIDE) typeMembers(pos)
}

// it's expected that later items in the `LazyList` supersede earlier items.
// (once a second item becomes available, you entirely discard the first item,
// rather than combine them)
private def typeMembers(pos: Position): LazyList[List[TypeMember]] = {
// Choosing which tree will tell us the type members at the given position:
// If pos leads to an Import, type the expr
Expand Down Expand Up @@ -1180,7 +1183,7 @@ class Global(settings: Settings, _reporter: Reporter, projectName: String = "")
}
}
object CompletionResult {
final case class ScopeMembers(positionDelta: Int, results: List[ScopeMember], name: Name, val forImport: Boolean) extends CompletionResult {
final case class ScopeMembers(positionDelta: Int, results: List[ScopeMember], name: Name, forImport: Boolean) extends CompletionResult {
type M = ScopeMember
}
final case class TypeMembers(positionDelta: Int, qualifier: Tree, tree: Tree, results: List[TypeMember], name: Name) extends CompletionResult {
Expand Down
11 changes: 11 additions & 0 deletions test/junit/scala/tools/nsc/interpreter/CompletionTest.scala
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,17 @@ class CompletionTest {
assert(candidates.forall(!_.isDeprecated), "No deprecations")
}

@Test
def importTypesAndTermsBoth(): Unit = {
val (completer, _, _) = interpretLines(
"""object A { class Type; object Term }"""
)
val candidates1 = completer.complete("A.T").candidates
assertEquals("Term", candidates1.map(_.defString).mkString(" "))
val candidates2 = completer.complete("import A.T").candidates
assertEquals("Term Type", candidates2.map(_.defString).sorted.mkString(" "))
}

@Test
def dependentTypeImplicits_t10353(): Unit = {
val code =
Expand Down

0 comments on commit 945e296

Please sign in to comment.