8000 fix: complete backticked idents containing `$` · scala/scala@1b0c18f · GitHub
[go: up one dir, main page]

Skip to content

Commit 1b0c18f

Browse files
committed
fix: complete backticked idents containing $
Replace the ad-hoc check for hiding from completions identifiers containing a `$` with a check against specific flavours of compiler-generated $-containing names.
1 parent cdb1a1d commit 1b0c18f

File tree

16 files changed

+183
-24
lines changed

16 files changed

+183
-24
lines changed

src/interactive/scala/tools/nsc/interactive/Global.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1009,7 +1009,7 @@ class Global(settings: Settings, _reporter: Reporter, projectName: String = "")
10091009
def add(sym: Symbol, pre: Type, implicitlyAdded: Boolean)(toMember: (Symbol, Type) => M): Unit = {
10101010
if ((sym.isGetter || sym.isSetter) && sym.accessed != NoSymbol) {
10111011
add(sym.accessed, pre, implicitlyAdded)(toMember)
1012-
} else if (!sym.name.decodedName.containsName("$") && !sym.isError && !sym.isArtifact && sym.hasRawInfo) {
1012+
} else if (!sym.isError && !sym.isArtifact && sym.hasRawInfo && !sym.isDefaultGetter && !sym.isMixinConstructor) {
10131013
val symtpe = pre.memberType(sym) onTypeError ErrorType
10141014
matching(sym, symtpe, this(sym.name)) match {
10151015
case Some(m) =>

test/files/presentation/callcc-interpreter.check

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@ reload: CallccInterpreter.scala
33
askTypeCompletion at CallccInterpreter.scala(51,34)
44
================================================================================
55
[response] askTypeCompletion at (51,34)
6-
retrieved 66 members
6+
retrieved 70 members
7+
[inaccessible] private[this] val self: callccInterpreter.type
8+
[inaccessible] private[this] val self: callccInterpreter.type
9+
[inaccessible] private[this] val self: callccInterpreter.type
10+
[inaccessible] private[this] val self: callccInterpreter.type
711
abstract trait Term extends AnyRef
812
abstract trait Value extends AnyRef
913
case class Add extends callccInterpreter.Term with Product with Serializable
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
reload: Completions.scala
2+
3+
askScopeCompletion at Completions.scala(5,2)
4+
================================================================================
5+
[response] askScopeCompletion at (5,2)
6+
retrieved 16 members
7+
abstract trait T extends AnyRef
8+
case class C1 extends Product with Serializable
9+
class C2 extends AnyRef
10+
def <init>(x: Int): test.C1
11+
def canEqual(x$1: Any): Boolean
12+
def copy(x: Int): test.C1
13+
def productArity: Int
14+
def productElement(x$1: Int): Any
15+
object C1
16+
override def equals(x$1: Any): Boolean
17+
override def hashCode(): Int
18+
override def productElementName(x$1: Int): String
19+
override def productIterator: Iterator[Any]
20+
override def productPrefix: String
21+
override def toString(): String
22+
private[this] val x: Int
23+
================================================================================
24+
25+
askScopeCompletion at Completions.scala(12,2)
26+
================================================================================
27+
[response] askScopeCompletion at (12,2)
28+
retrieved 4 members
29+
abstract trait T extends AnyRef
30+
case class C1 extends Product with Serializable
31+
class C2 extends AnyRef
32+
object C1
33+
================================================================================
34+
35+
askScopeCompletion at Completions.scala(21,2)
36+
================================================================================
37+
[response] askScopeCompletion at (21,2)
38+
retrieved 8 members
39+
abstract trait T extends AnyRef
40+
case class C1 extends Product with Serializable
41+
class C2 extends AnyRef
42+
def $: Int
43+
def $var: Int
44+
def <init>(): test.C2
45+
def dollar$: Int
46+
object C1
47+
================================================================================
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import scala.tools.nsc.interactive.tests.InteractiveTest
2+
3+
object Test extends InteractiveTest
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package test
2+
3+
case class C1(x: Int) {
4+
// Filter out `def copy$default$1: Int`
5+
/*_*/
6+
}
7+
8+
trait T {
9+
println("hello")
10+
11+
// Filter out `$init$`
12+
/*_*/
13+
}
14+
15+
class C2 {
16+
def `$` = 1
17+
def `dollar$` = 2
18+
def `$var` = 3
19+
20+
// Include explicit dollar methods
21+
/*_*/
22+
}

test/files/presentation/higher-order-completion.check

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@ reload: Completions.scala
33
askTypeCompletion at Completions.scala(12,14)
44
================================================================================
55
[response] askTypeCompletion at (12,14)
6-
retrieved 31 members
6+
retrieved 35 members
7+
[inaccessible] private[this] val self: test.Foo
8+
[inaccessible] private[this] val self: test.Foo
9+
[inaccessible] private[this] val self: test.Foo
10+
[inaccessible] private[this] val self: test.Foo
711
[inaccessible] protected[package lang] def clone(): Object
812
[inaccessible] protected[package lang] def finalize(): Unit
913
def +(other: String): String
@@ -37,7 +41,11 @@ final def wait(x$1: Long, x$2: Int): Unit
3741
askTypeCompletion at Completions.scala(15,13)
3842
================================================================================
3943
[response] askTypeCompletion at (15,13)
40-
retrieved 31 members
44+
retrieved 35 members
45+
[inaccessible] private[this] val self: test.Foo
46+
[inaccessible] private[this] val self: test.Foo
47+
[inaccessible] private[this] val self: test.Foo
48+
[inaccessible] private[this] val self: test.Foo
4149
[inaccessible] protected[package lang] def clone(): Object
4250
[inaccessible] protected[package lang] def finalize(): Unit
4351
def +(other: String): String
@@ -71,7 +79,11 @@ final def wait(x$1: Long, x$2: Int): Unit
7179
askTypeCompletion at Completions.scala(18,17)
7280
================================================================================
7381
[response] askTypeCompletion at (18,17)
74-
retrieved 31 members
82+
retrieved 35 members
83+
[inaccessible] private[this] val self: test.Foo
84+
[inaccessible] private[this] val self: test.Foo
85+
[inaccessible] private[this] val self: test.Foo
86+
[inaccessible] private[this] val self: test.Foo
7587
[inaccessible] protected[package lang] def clone(): Object
7688
[inaccessible] protected[package lang] def finalize(): Unit
7789
def +(other: String): String
@@ -105,7 +117,11 @@ final def wait(x$1: Long, x$2: Int): Unit
105117
askTypeCompletion at Completions.scala(21,24)
106118
================================================================================
107119
[response] askTypeCompletion at (21,24)
108-
retrieved 31 members
120+
retrieved 35 members
121+
[inaccessible] private[this] val self: test.Foo
122+
[inaccessible] private[this] val self: test.Foo
123+
[inaccessible] private[this] val self: test.Foo
124+
[inaccessible] private[this] val self: test.Foo
109125
[inaccessible] protected[package lang] def clone(): Object
110126
[inaccessible] protected[package lang] def finalize(): Unit
111127
def +(other: String): String

test/files/presentation/ide-bug-1000349.check

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@ reload: CompletionOnEmptyArgMethod.scala
33
askTypeCompletion at CompletionOnEmptyArgMethod.scala(2,17)
44
================================================================================
55
[response] askTypeCompletion at (2,17)
6-
retrieved 30 members
6+
retrieved 34 members
7+
[inaccessible] private[this] val self: Foo
8+
[inaccessible] private[this] val self: Foo
9+
[inaccessible] private[this] val self: Foo
10+
[inaccessible] private[this] val self: Foo
711
def +(other: String): String
812
def ->[B](y: B): (Foo, B)
913
def ensuring(cond: Boolean): Foo

test/files/presentation/ide-bug-1000475.check

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@ reload: Foo.scala
33
askTypeCompletion at Foo.scala(3,7)
44
================================================================================
55
[response] askTypeCompletion at (3,7)
6-
retrieved 29 members
6+
retrieved 33 members
7+
[inaccessible] private[this] val self: Object
8+
[inaccessible] private[this] val self: Object
9+
[inaccessible] private[this] val self: Object
10+
[inaccessible] private[this] val self: Object
711
[inaccessible] protected[package lang] def clone(): Object
812
[inaccessible] protected[package lang] def finalize(): Unit
913
def +(other: String): String
@@ -35,7 +39,11 @@ final def wait(x$1: Long, x$2: Int): Unit
3539
askTypeCompletion at Foo.scala(6,10)
3640
================================================================================
3741
[response] askTypeCompletion at (6,10)
38-
retrieved 29 members
42+
retrieved 33 members
43+
[inaccessible] private[this] val self: Object
44+
[inaccessible] private[this] val self: Object
45+
[inaccessible] private[this] val self: Object
46+
[inaccessible] private[this] val self: Object
3947
[inaccessible] protected[package lang] def clone(): Object
4048
[inaccessible] protected[package lang] def finalize(): Unit
4149
def +(other: String): String
@@ -67,7 +75,11 @@ final def wait(x$1: Long, x$2: Int): Unit
6775
askTypeCompletion at Foo.scala(7,7)
6876
================================================================================
6977
[response] askTypeCompletion at (7,7)
70-
retrieved 29 members
78+
retrieved 33 members
79+
[inaccessible] private[this] val self: Object
80+
[inaccessible] private[this] val self: Object
81+
[inaccessible] private[this] val self: Object
82+
[inaccessible] private[this] val self: Object
7183
[inaccessible] protected[package lang] def clone(): Object
7284
[inaccessible] protected[package lang] def finalize(): Unit
7385
def +(other: String): String

test/files/presentation/ide-bug-1000531.check

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@ reload: CrashOnLoad.scala, TestIterable.java
33
askTypeCompletion at CrashOnLoad.scala(9,11)
44
================================================================================
55
[response] askTypeCompletion at (9,11)
6-
retrieved 30 members
6+
retrieved 34 members
7+
[inaccessible] private[this] val self: other.TestIterator[Nothing]
8+
[inaccessible] private[this] val self: other.TestIterator[Nothing]
9+
[inaccessible] private[this] val self: other.TestIterator[Nothing]
10+
[inaccessible] private[this] val self: other.TestIterator[Nothing]
711
[inaccessible] protected[package lang] def clone(): Object
812
[inaccessible] protected[package lang] def finalize(): Unit
913
def +(other: String): String

test/files/presentation/implicit-member.check

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@ reload: ImplicitMember.scala
33
askTypeCompletion at ImplicitMember.scala(7,7)
44
================================================================================
55
[response] askTypeCompletion at (7,7)
6-
retrieved 32 members
6+
retrieved 36 members
7+
[inaccessible] private[this] val self: Implicit.type
8+
[inaccessible] private[this] val self: Implicit.type
9+
[inaccessible] private[this] val self: Implicit.type
10+
[inaccessible] private[this] val self: Implicit.type
711
def +(other: String): String
812
def ->[B](y: B): (Implicit.type, B)
913
def ensuring(cond: Boolean): Implicit.type

0 commit comments

Comments
 (0)
0