[kotlin] Make SmartSet implement MutableSet for more type-safety

`AbstractSet` is a java class, and it brings flexible types with it.
Because of it, it was possible to write the following code:

```kt
fun usage() {
  val mySet = SmartSet.create<String>() // should not contain nulls
  mySet += null // compiles because of flexible types
}
```

Using `AbstractMutableSet`
as a base class does not change the implementation,
but explicitly adds a proper kotlin `MutableSet`
interface to the class, making it more type-safe
This commit is contained in:
Roman Golyshev
2023-10-16 17:42:08 +02:00
committed by Space Team
parent 15cdc971bf
commit 648330da50
@@ -25,7 +25,7 @@ import java.util.*
* Also, [iterator] returns an iterator which does not support [MutableIterator.remove].
*/
@Suppress("UNCHECKED_CAST")
class SmartSet<T> private constructor() : AbstractSet<T>() {
class SmartSet<T> private constructor() : AbstractMutableSet<T>() {
companion object {
private const val ARRAY_THRESHOLD = 5