summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2015-09-03 12:45:46 +1000
committerJason Zaugg <jzaugg@gmail.com>2015-09-03 14:10:40 +1000
commit7bd12e33c0545de23a2c5af4fe73fa37f2f4608b (patch)
tree1baae3721bb7b4945ea519d1f243c58e71602672
parenta67b04079716812004b0d44ad65d48c508cf7d9e (diff)
downloadscala-7bd12e33c0545de23a2c5af4fe73fa37f2f4608b.tar.gz
scala-7bd12e33c0545de23a2c5af4fe73fa37f2f4608b.tar.bz2
scala-7bd12e33c0545de23a2c5af4fe73fa37f2f4608b.zip
Don't offer `asInstanceOf` et al as completions in a fresh REPL
Trying harder to keep the synthetic interpretter wrapper classes behind the curtain
-rw-r--r--src/repl/scala/tools/nsc/interpreter/PresentationCompilerCompleter.scala4
-rw-r--r--test/junit/scala/tools/nsc/interpreter/CompletionTest.scala4
2 files changed, 7 insertions, 1 deletions
diff --git a/src/repl/scala/tools/nsc/interpreter/PresentationCompilerCompleter.scala b/src/repl/scala/tools/nsc/interpreter/PresentationCompilerCompleter.scala
index 3fb4428e76..56819cf08e 100644
--- a/src/repl/scala/tools/nsc/interpreter/PresentationCompilerCompleter.scala
+++ b/src/repl/scala/tools/nsc/interpreter/PresentationCompilerCompleter.scala
@@ -71,7 +71,9 @@ class PresentationCompilerCompleter(intp: IMain) extends Completion with ScalaCo
val found = result.completionsAt(cursor) match {
case NoResults => Completion.NoCandidates
case r =>
- val matching = r.matchingResults()
+ def isInterpreterWrapperMember(m: Member): Boolean =
+ definitions.isUniversalMember(m.sym) && nme.isReplWrapperName(m.prefix.typeSymbol.name)
+ val matching = r.matchingResults().filterNot(isInterpreterWrapperMember)
val tabAfterCommonPrefixCompletion = lastCommonPrefixCompletion.contains(buf.substring(0, cursor)) && matching.exists(_.symNameDropLocal == r.name)
val doubleTab = tabCount > 0 && matching.forall(_.symNameDropLocal == r.name)
if (tabAfterCommonPrefixCompletion || doubleTab) defStringCandidates(matching, r.name)
diff --git a/test/junit/scala/tools/nsc/interpreter/CompletionTest.scala b/test/junit/scala/tools/nsc/interpreter/CompletionTest.scala
index 8c72ed7b32..003a138e47 100644
--- a/test/junit/scala/tools/nsc/interpreter/CompletionTest.scala
+++ b/test/junit/scala/tools/nsc/interpreter/CompletionTest.scala
@@ -42,6 +42,10 @@ class CompletionTest {
// stable terms are offered in type completion as they might be used as a prefix
checkExact(completer, """object O { def x_y_z = 0; val x_z_y = ""; type T = x_""")("x_z_y")
checkExact(completer, """def method { def x_y_z = 0; val x_z_y = ""; type T = x_""")("x_z_y")
+
+ // We exclude inherited members of the synthetic interpreter wrapper classes
+ checkExact(completer, """asInstanceO""")()
+ checkExact(completer, """class C { asInstanceO""")("asInstanceOf")
}
@Test