Skip to content

Commit 01be968

Browse files
authored
Merge pull request #13515 from dos65/completion_synthetic_select_fix
[Interactive] Include scope completions for synthic select tree
2 parents 6a6dd7b + 494094a commit 01be968

File tree

2 files changed

+20
-4
lines changed

2 files changed

+20
-4
lines changed

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

+7-4
Original file line numberDiff line numberDiff line change
@@ -112,10 +112,13 @@ object Completion {
112112
val completer = new Completer(mode, prefix, pos)
113113

114114
val completions = path match {
115-
case Select(qual, _) :: _ => completer.selectionCompletions(qual)
116-
case Import(expr, _) :: _ => completer.directMemberCompletions(expr)
117-
case (_: untpd.ImportSelector) :: Import(expr, _) :: _ => completer.directMemberCompletions(expr)
118-
case _ => completer.scopeCompletions
115+
// Ignore synthetic select from `This` because in code it was `Ident`
116+
// See example in dotty.tools.languageserver.CompletionTest.syntheticThis
117+
case Select(qual @ This(_), _) :: _ if qual.span.isSynthetic => completer.scopeCompletions
118+
case Select(qual, _) :: _ => completer.selectionCompletions(qual)
119+
case Import(expr, _) :: _ => completer.directMemberCompletions(expr)
120+
case (_: untpd.ImportSelector) :: Import(expr, _) :: _ => completer.directMemberCompletions(expr)
121+
case _ => completer.scopeCompletions
119122
}
120123

121124
val describedCompletions = describeCompletions(completions)

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

+13
Original file line numberDiff line numberDiff line change
@@ -857,4 +857,17 @@ class CompletionTest {
857857
|}""".withSource
858858
.completion(m1, Set(("show",Method, "(using x$2: x$1.reflect.Printer[x$1.reflect.Tree]): String")))
859859
}
860+
861+
@Test def syntheticThis: Unit = {
862+
code"""|class Y() {
863+
| def bar: Unit =
864+
| val argument: Int = ???
865+
| arg${m1}
866+
|
867+
| def arg: String = ???
868+
|}
869+
|""".withSource
870+
.completion(m1, Set(("arg", Method, "=> String"),
871+
("argument", Field, "Int")))
872+
}
860873
}

0 commit comments

Comments
 (0)