@@ -2,13 +2,13 @@ package dotty.tools.dotc.util
22
33import collection .mutable .ListBuffer
44
5- abstract class SimpleMap [K <: AnyRef , + V >: Null <: AnyRef ] extends (K => V ) {
5+ abstract class SimpleIdentityMap [K <: AnyRef , + V >: Null <: AnyRef ] extends (K => V ) {
66 def size : Int
77 def apply (k : K ): V
8- def remove (k : K ): SimpleMap [K , V ]
9- def updated [V1 >: V <: AnyRef ](k : K , v : V1 ): SimpleMap [K , V1 ]
8+ def remove (k : K ): SimpleIdentityMap [K , V ]
9+ def updated [V1 >: V <: AnyRef ](k : K , v : V1 ): SimpleIdentityMap [K , V1 ]
1010 def contains (k : K ): Boolean = apply(k) != null
11- def mapValuesNow [V1 >: V <: AnyRef ](f : (K , V1 ) => V1 ): SimpleMap [K , V1 ]
11+ def mapValuesNow [V1 >: V <: AnyRef ](f : (K , V1 ) => V1 ): SimpleIdentityMap [K , V1 ]
1212 def foreachBinding (f : (K , V ) => Unit ): Unit
1313 def map2 [T ](f : (K , V ) => T ): List [T ] = {
1414 val buf = new ListBuffer [T ]
@@ -23,11 +23,11 @@ abstract class SimpleMap[K <: AnyRef, +V >: Null <: AnyRef] extends (K => V) {
2323 }
2424}
2525
26- object SimpleMap {
26+ object SimpleIdentityMap {
2727
2828 private val CompactifyThreshold = 4
2929
30- private object myEmpty extends SimpleMap [AnyRef , Null ] {
30+ private object myEmpty extends SimpleIdentityMap [AnyRef , Null ] {
3131 def size = 0
3232 def apply (k : AnyRef ) = null
3333 def remove (k : AnyRef ) = this
@@ -36,15 +36,15 @@ object SimpleMap {
3636 def foreachBinding (f : (AnyRef , Null ) => Unit ) = ()
3737 }
3838
39- def Empty [K <: AnyRef ] = myEmpty.asInstanceOf [SimpleMap [K , Null ]]
39+ def Empty [K <: AnyRef ] = myEmpty.asInstanceOf [SimpleIdentityMap [K , Null ]]
4040
41- class Map1 [K <: AnyRef , + V >: Null <: AnyRef ] (k1 : K , v1 : V ) extends SimpleMap [K , V ] {
41+ class Map1 [K <: AnyRef , + V >: Null <: AnyRef ] (k1 : K , v1 : V ) extends SimpleIdentityMap [K , V ] {
4242 def size = 1
4343 def apply (k : K ) =
4444 if (k eq k1) v1
4545 else null
4646 def remove (k : K ) =
47- if (k eq k1) Empty .asInstanceOf [SimpleMap [K , V ]]
47+ if (k eq k1) Empty .asInstanceOf [SimpleIdentityMap [K , V ]]
4848 else this
4949 def updated [V1 >: V <: AnyRef ](k : K , v : V1 ) =
5050 if (k eq k1) new Map1 (k, v)
@@ -56,7 +56,7 @@ object SimpleMap {
5656 def foreachBinding (f : (K , V ) => Unit ) = f(k1, v1)
5757 }
5858
59- class Map2 [K <: AnyRef , + V >: Null <: AnyRef ] (k1 : K , v1 : V , k2 : K , v2 : V ) extends SimpleMap [K , V ] {
59+ class Map2 [K <: AnyRef , + V >: Null <: AnyRef ] (k1 : K , v1 : V , k2 : K , v2 : V ) extends SimpleIdentityMap [K , V ] {
6060 def size = 2
6161 def apply (k : K ) =
6262 if (k eq k1) v1
@@ -78,7 +78,7 @@ object SimpleMap {
7878 def foreachBinding (f : (K , V ) => Unit ) = { f(k1, v1); f(k2, v2) }
7979 }
8080
81- class Map3 [K <: AnyRef , + V >: Null <: AnyRef ] (k1 : K , v1 : V , k2 : K , v2 : V , k3 : K , v3 : V ) extends SimpleMap [K , V ] {
81+ class Map3 [K <: AnyRef , + V >: Null <: AnyRef ] (k1 : K , v1 : V , k2 : K , v2 : V , k3 : K , v3 : V ) extends SimpleIdentityMap [K , V ] {
8282 def size = 3
8383 def apply (k : K ) =
8484 if (k eq k1) v1
@@ -103,7 +103,7 @@ object SimpleMap {
103103 def foreachBinding (f : (K , V ) => Unit ) = { f(k1, v1); f(k2, v2); f(k3, v3) }
104104 }
105105
106- class Map4 [K <: AnyRef , + V >: Null <: AnyRef ] (k1 : K , v1 : V , k2 : K , v2 : V , k3 : K , v3 : V , k4 : K , v4 : V ) extends SimpleMap [K , V ] {
106+ class Map4 [K <: AnyRef , + V >: Null <: AnyRef ] (k1 : K , v1 : V , k2 : K , v2 : V , k3 : K , v3 : V , k4 : K , v4 : V ) extends SimpleIdentityMap [K , V ] {
107107 def size = 4
108108 def apply (k : K ) =
109109 if (k eq k1) v1
@@ -131,7 +131,7 @@ object SimpleMap {
131131 def foreachBinding (f : (K , V ) => Unit ) = { f(k1, v1); f(k2, v2); f(k3, v3); f(k4, v4) }
132132 }
133133
134- class MapMore [K <: AnyRef , + V >: Null <: AnyRef ](bindings : Array [AnyRef ]) extends SimpleMap [K , V ] {
134+ class MapMore [K <: AnyRef , + V >: Null <: AnyRef ](bindings : Array [AnyRef ]) extends SimpleIdentityMap [K , V ] {
135135 private def key (i : Int ): K = bindings(i).asInstanceOf [K ]
136136 private def value (i : Int ): V = bindings(i + 1 ).asInstanceOf [V ]
137137
@@ -146,12 +146,12 @@ object SimpleMap {
146146 null
147147 }
148148
149- def remove (k : K ): SimpleMap [K , V ] = {
149+ def remove (k : K ): SimpleIdentityMap [K , V ] = {
150150 var i = 0
151151 while (i < bindings.length) {
152152 if (bindings(i) eq k) return {
153153 if (size == CompactifyThreshold ) {
154- var m : SimpleMap [K , V ] = Empty [K ]
154+ var m : SimpleIdentityMap [K , V ] = Empty [K ]
155155 for (j <- 0 until bindings.length by 2 )
156156 if (j != i) m = m.updated(key(j), value(j))
157157 m
@@ -167,7 +167,7 @@ object SimpleMap {
167167 this
168168 }
169169
170- def updated [V1 >: V <: AnyRef ](k : K , v : V1 ): SimpleMap [K , V ] = {
170+ def updated [V1 >: V <: AnyRef ](k : K , v : V1 ): SimpleIdentityMap [K , V ] = {
171171 var i = 0
172172 while (i < bindings.length) {
173173 if (bindings(i) eq k)
0 commit comments