@@ -19,7 +19,7 @@ object HashSet:
19
19
* However, a table of size up to DenseLimit will be re-sized only
20
20
* once the number of elements reaches the table's size.
21
21
*/
22
- class HashSet [T >: Null <: AnyRef ](initialCapacity : Int = 8 , capacityMultiple : Int = 2 ) extends MutableSet [T ] {
22
+ class HashSet [T ](initialCapacity : Int = 8 , capacityMultiple : Int = 2 ) extends MutableSet [T ] {
23
23
import HashSet .DenseLimit
24
24
25
25
private var used : Int = _
@@ -65,8 +65,9 @@ class HashSet[T >: Null <: AnyRef](initialCapacity: Int = 8, capacityMultiple: I
65
65
index(idx + 1 )
66
66
67
67
protected def entryAt (idx : Int ) = table(idx).asInstanceOf [T ]
68
+ protected def setEntry (idx : Int , x : T ) = table(idx) = x.asInstanceOf [AnyRef ]
68
69
69
- def lookup (x : T ): T =
70
+ def lookup (x : T ): T | Null =
70
71
Stats .record(statsItem(" lookup" ))
71
72
var idx = firstIndex(x)
72
73
var e = entryAt(idx)
@@ -79,7 +80,7 @@ class HashSet[T >: Null <: AnyRef](initialCapacity: Int = 8, capacityMultiple: I
79
80
/** Add entry at `x` at index `idx` */
80
81
protected def addEntryAt (idx : Int , x : T ): T =
81
82
Stats .record(statsItem(" addEntryAt" ))
82
- table (idx) = x
83
+ setEntry (idx, x)
83
84
used += 1
84
85
if used > limit then growTable()
85
86
x
@@ -112,7 +113,7 @@ class HashSet[T >: Null <: AnyRef](initialCapacity: Int = 8, capacityMultiple: I
112
113
|| index(hole - index(hash(e))) < limit
113
114
// hash(k) is then logically at or before hole; can be moved forward to fill hole
114
115
then
115
- table (hole) = e
116
+ setEntry (hole, e)
116
117
hole = idx
117
118
table(hole) = null
118
119
used -= 1
@@ -127,7 +128,7 @@ class HashSet[T >: Null <: AnyRef](initialCapacity: Int = 8, capacityMultiple: I
127
128
while e != null do
128
129
idx = nextIndex(idx)
129
130
e = entryAt(idx)
130
- table (idx) = x
131
+ setEntry (idx, x)
131
132
132
133
def copyFrom (oldTable : Array [AnyRef ]): Unit =
133
134
if isDense then
0 commit comments