diff --git a/benchmarks/commonMain/src/benchmarks/immutableList/AddAll.kt b/benchmarks/commonMain/src/benchmarks/immutableList/AddAll.kt index b3688706..5c0f0906 100644 --- a/benchmarks/commonMain/src/benchmarks/immutableList/AddAll.kt +++ b/benchmarks/commonMain/src/benchmarks/immutableList/AddAll.kt @@ -9,6 +9,7 @@ import benchmarks.* import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf import kotlinx.benchmark.* +import kotlinx.collections.immutable.emptyPersistentList @State(Scope.Benchmark) open class AddAll { @@ -35,7 +36,7 @@ open class AddAll { */ @Benchmark fun addAllLast(): ImmutableList { - return persistentListOf().addAll(listToAdd) + return emptyPersistentList().addAll(listToAdd) } /** diff --git a/benchmarks/commonMain/src/benchmarks/immutableList/Get.kt b/benchmarks/commonMain/src/benchmarks/immutableList/Get.kt index 3f0264b3..d3d10992 100644 --- a/benchmarks/commonMain/src/benchmarks/immutableList/Get.kt +++ b/benchmarks/commonMain/src/benchmarks/immutableList/Get.kt @@ -9,13 +9,14 @@ import benchmarks.* import kotlinx.collections.immutable.PersistentList import kotlinx.collections.immutable.persistentListOf import kotlinx.benchmark.* +import kotlinx.collections.immutable.emptyPersistentList @State(Scope.Benchmark) open class Get { @Param(BM_1, BM_10, BM_100, BM_1000, BM_10000, BM_100000, BM_1000000, BM_10000000) var size: Int = 0 - private var persistentList: PersistentList = persistentListOf() + private var persistentList: PersistentList = emptyPersistentList() @Setup fun prepare() { diff --git a/benchmarks/commonMain/src/benchmarks/immutableList/Iterate.kt b/benchmarks/commonMain/src/benchmarks/immutableList/Iterate.kt index cb00a701..58169b56 100644 --- a/benchmarks/commonMain/src/benchmarks/immutableList/Iterate.kt +++ b/benchmarks/commonMain/src/benchmarks/immutableList/Iterate.kt @@ -9,13 +9,14 @@ import benchmarks.* import kotlinx.collections.immutable.PersistentList import kotlinx.collections.immutable.persistentListOf import kotlinx.benchmark.* +import kotlinx.collections.immutable.emptyPersistentList @State(Scope.Benchmark) open class Iterate { @Param(BM_1, BM_10, BM_100, BM_1000, BM_10000, BM_100000, BM_1000000, BM_10000000) var size: Int = 0 - private var persistentList: PersistentList = persistentListOf() + private var persistentList: PersistentList = emptyPersistentList() @Setup fun prepare() { diff --git a/benchmarks/commonMain/src/benchmarks/immutableList/Remove.kt b/benchmarks/commonMain/src/benchmarks/immutableList/Remove.kt index 6e1e3c07..574957b5 100644 --- a/benchmarks/commonMain/src/benchmarks/immutableList/Remove.kt +++ b/benchmarks/commonMain/src/benchmarks/immutableList/Remove.kt @@ -10,13 +10,14 @@ import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.PersistentList import kotlinx.collections.immutable.persistentListOf import kotlinx.benchmark.* +import kotlinx.collections.immutable.emptyPersistentList @State(Scope.Benchmark) open class Remove { @Param(BM_1, BM_10, BM_100, BM_1000, BM_10000, BM_100000, BM_1000000, BM_10000000) var size: Int = 0 - private var persistentList: PersistentList = persistentListOf() + private var persistentList: PersistentList = emptyPersistentList() @Setup fun prepare() { diff --git a/benchmarks/commonMain/src/benchmarks/immutableList/RemoveAll.kt b/benchmarks/commonMain/src/benchmarks/immutableList/RemoveAll.kt index 9edff485..c952881e 100644 --- a/benchmarks/commonMain/src/benchmarks/immutableList/RemoveAll.kt +++ b/benchmarks/commonMain/src/benchmarks/immutableList/RemoveAll.kt @@ -9,6 +9,7 @@ import benchmarks.* import kotlinx.collections.immutable.PersistentList import kotlinx.collections.immutable.persistentListOf import kotlinx.benchmark.* +import kotlinx.collections.immutable.emptyPersistentList import kotlin.random.Random @State(Scope.Benchmark) @@ -16,11 +17,11 @@ open class RemoveAll { @Param(BM_1, BM_10, BM_100, BM_1000, BM_10000, BM_100000, BM_1000000, BM_10000000) var size: Int = 0 - private var persistentList: PersistentList = persistentListOf() + private var persistentList: PersistentList = emptyPersistentList() @Setup fun prepare() { - persistentList = persistentListOf().addAll(List(size) { it }) + persistentList = emptyPersistentList().addAll(List(size) { it }) } // Results of the following benchmarks do not indicate memory or time spent per operation, diff --git a/benchmarks/commonMain/src/benchmarks/immutableList/RemoveAllPredicate.kt b/benchmarks/commonMain/src/benchmarks/immutableList/RemoveAllPredicate.kt index 46f3aae2..b93567cc 100644 --- a/benchmarks/commonMain/src/benchmarks/immutableList/RemoveAllPredicate.kt +++ b/benchmarks/commonMain/src/benchmarks/immutableList/RemoveAllPredicate.kt @@ -8,6 +8,7 @@ package benchmarks.immutableList import benchmarks.* import kotlinx.collections.immutable.PersistentList import kotlinx.benchmark.* +import kotlinx.collections.immutable.emptyPersistentList import kotlinx.collections.immutable.persistentListOf import kotlin.random.Random @@ -16,7 +17,7 @@ open class RemoveAllPredicate { @Param(BM_1, BM_10, BM_100, BM_1000, BM_10000, BM_100000, BM_1000000, BM_10000000) var size: Int = 0 - private var persistentList = persistentListOf() + private var persistentList = emptyPersistentList() private val truePredicate: (String) -> Boolean = { true } private val falsePredicate: (String) -> Boolean = { false } private var randomHalfElementsPredicate: (String) -> Boolean = truePredicate @@ -39,7 +40,7 @@ open class RemoveAllPredicate { tailElementsPredicate = { it in tailElements } val allElements = List(size) { it.toString() } - persistentList = persistentListOf().addAll(allElements) + persistentList = emptyPersistentList().addAll(allElements) } // The benchmarks measure (time and memory spent in `removeAll` operation) / size diff --git a/benchmarks/commonMain/src/benchmarks/immutableList/Set.kt b/benchmarks/commonMain/src/benchmarks/immutableList/Set.kt index e7282aff..a3cf0988 100644 --- a/benchmarks/commonMain/src/benchmarks/immutableList/Set.kt +++ b/benchmarks/commonMain/src/benchmarks/immutableList/Set.kt @@ -10,13 +10,14 @@ import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.PersistentList import kotlinx.collections.immutable.persistentListOf import kotlinx.benchmark.* +import kotlinx.collections.immutable.emptyPersistentList @State(Scope.Benchmark) open class Set { @Param(BM_1, BM_10, BM_100, BM_1000, BM_10000, BM_100000, BM_1000000, BM_10000000) var size: Int = 0 - private var persistentList: PersistentList = persistentListOf() + private var persistentList: PersistentList = emptyPersistentList() private var randomIndices = listOf() @Setup diff --git a/benchmarks/commonMain/src/benchmarks/immutableList/builder/AddAll.kt b/benchmarks/commonMain/src/benchmarks/immutableList/builder/AddAll.kt index f2b10e48..f5790af3 100644 --- a/benchmarks/commonMain/src/benchmarks/immutableList/builder/AddAll.kt +++ b/benchmarks/commonMain/src/benchmarks/immutableList/builder/AddAll.kt @@ -9,6 +9,7 @@ import benchmarks.* import kotlinx.collections.immutable.PersistentList import kotlinx.collections.immutable.persistentListOf import kotlinx.benchmark.* +import kotlinx.collections.immutable.emptyPersistentList @State(Scope.Benchmark) open class AddAll { @@ -38,7 +39,7 @@ open class AddAll { */ @Benchmark fun addAllLast(): PersistentList.Builder { - val builder = persistentListOf().builder() + val builder = emptyPersistentList().builder() builder.addAll(listToAdd) return builder } diff --git a/benchmarks/commonMain/src/benchmarks/immutableList/builder/Get.kt b/benchmarks/commonMain/src/benchmarks/immutableList/builder/Get.kt index 91eb251b..263db1a4 100644 --- a/benchmarks/commonMain/src/benchmarks/immutableList/builder/Get.kt +++ b/benchmarks/commonMain/src/benchmarks/immutableList/builder/Get.kt @@ -8,6 +8,7 @@ package benchmarks.immutableList.builder import benchmarks.* import kotlinx.collections.immutable.persistentListOf import kotlinx.benchmark.* +import kotlinx.collections.immutable.emptyPersistentList @State(Scope.Benchmark) open class Get { @@ -17,7 +18,7 @@ open class Get { @Param(IP_100, IP_99_09, IP_95, IP_70, IP_50, IP_30, IP_0) var immutablePercentage: Double = 0.0 - private var builder = persistentListOf().builder() + private var builder = emptyPersistentList().builder() @Setup fun prepare() { diff --git a/benchmarks/commonMain/src/benchmarks/immutableList/builder/Iterate.kt b/benchmarks/commonMain/src/benchmarks/immutableList/builder/Iterate.kt index a641e35e..6c398099 100644 --- a/benchmarks/commonMain/src/benchmarks/immutableList/builder/Iterate.kt +++ b/benchmarks/commonMain/src/benchmarks/immutableList/builder/Iterate.kt @@ -8,6 +8,7 @@ package benchmarks.immutableList.builder import benchmarks.* import kotlinx.collections.immutable.persistentListOf import kotlinx.benchmark.* +import kotlinx.collections.immutable.emptyPersistentList @State(Scope.Benchmark) open class Iterate { @@ -17,7 +18,7 @@ open class Iterate { @Param(IP_100, IP_99_09, IP_95, IP_70, IP_50, IP_30, IP_0) var immutablePercentage: Double = 0.0 - private var builder = persistentListOf().builder() + private var builder = emptyPersistentList().builder() @Setup fun prepare() { diff --git a/benchmarks/commonMain/src/benchmarks/immutableList/builder/RemoveAll.kt b/benchmarks/commonMain/src/benchmarks/immutableList/builder/RemoveAll.kt index f2c994f3..2bd80f7c 100644 --- a/benchmarks/commonMain/src/benchmarks/immutableList/builder/RemoveAll.kt +++ b/benchmarks/commonMain/src/benchmarks/immutableList/builder/RemoveAll.kt @@ -9,6 +9,7 @@ import benchmarks.* import kotlinx.collections.immutable.PersistentList import kotlinx.collections.immutable.persistentListOf import kotlinx.benchmark.* +import kotlinx.collections.immutable.emptyPersistentList import kotlin.random.Random @State(Scope.Benchmark) @@ -84,7 +85,7 @@ open class RemoveAll { private fun persistentListBuilderAddIndexes(): PersistentList.Builder { val immutableSize = immutableSize(size, immutablePercentage) - var list = persistentListOf() + var list = emptyPersistentList() for (i in 0 until immutableSize) { list = list.add(i) } diff --git a/benchmarks/commonMain/src/benchmarks/immutableList/builder/Set.kt b/benchmarks/commonMain/src/benchmarks/immutableList/builder/Set.kt index ff353267..e599c37e 100644 --- a/benchmarks/commonMain/src/benchmarks/immutableList/builder/Set.kt +++ b/benchmarks/commonMain/src/benchmarks/immutableList/builder/Set.kt @@ -9,6 +9,7 @@ import benchmarks.* import kotlinx.collections.immutable.PersistentList import kotlinx.collections.immutable.persistentListOf import kotlinx.benchmark.* +import kotlinx.collections.immutable.emptyPersistentList @State(Scope.Benchmark) open class Set { @@ -18,7 +19,7 @@ open class Set { @Param(IP_100, IP_99_09, IP_95, IP_70, IP_50, IP_30, IP_0) var immutablePercentage: Double = 0.0 - private var builder = persistentListOf().builder() + private var builder = emptyPersistentList().builder() private var randomIndices = listOf() @Setup diff --git a/benchmarks/commonMain/src/benchmarks/immutableList/utils.kt b/benchmarks/commonMain/src/benchmarks/immutableList/utils.kt index e2865b49..e4fac569 100644 --- a/benchmarks/commonMain/src/benchmarks/immutableList/utils.kt +++ b/benchmarks/commonMain/src/benchmarks/immutableList/utils.kt @@ -6,10 +6,11 @@ package benchmarks.immutableList import kotlinx.collections.immutable.PersistentList +import kotlinx.collections.immutable.emptyPersistentList import kotlinx.collections.immutable.persistentListOf fun persistentListAdd(size: Int): PersistentList { - var list = persistentListOf() + var list = emptyPersistentList() repeat(times = size) { list = list.add("some element") } diff --git a/benchmarks/commonMain/src/benchmarks/immutableMap/Canonicalization.kt b/benchmarks/commonMain/src/benchmarks/immutableMap/Canonicalization.kt index ad7c2338..8c8c52a6 100644 --- a/benchmarks/commonMain/src/benchmarks/immutableMap/Canonicalization.kt +++ b/benchmarks/commonMain/src/benchmarks/immutableMap/Canonicalization.kt @@ -9,6 +9,7 @@ import benchmarks.* import kotlinx.collections.immutable.PersistentMap import kotlinx.collections.immutable.persistentMapOf import kotlinx.benchmark.* +import kotlinx.collections.immutable.emptyPersistentMap /** @@ -35,13 +36,13 @@ open class Canonicalization { private var keys = listOf() private var keysToRemove = listOf() - private var persistentMap = persistentMapOf() + private var persistentMap = emptyPersistentMap() /** * Expected height of this persistent map is equal to the [persistentMap]'s expected height divided by 2. * Obtained by removing some entries of the [persistentMap]. */ - private var halfHeightPersistentMap = persistentMapOf() + private var halfHeightPersistentMap = emptyPersistentMap() @Setup fun prepare() { diff --git a/benchmarks/commonMain/src/benchmarks/immutableMap/Equals.kt b/benchmarks/commonMain/src/benchmarks/immutableMap/Equals.kt index 1c3dc746..de6abad2 100644 --- a/benchmarks/commonMain/src/benchmarks/immutableMap/Equals.kt +++ b/benchmarks/commonMain/src/benchmarks/immutableMap/Equals.kt @@ -7,6 +7,7 @@ package benchmarks.immutableMap import benchmarks.* import kotlinx.benchmark.* +import kotlinx.collections.immutable.emptyPersistentMap import kotlinx.collections.immutable.persistentMapOf @State(Scope.Benchmark) @@ -20,10 +21,10 @@ open class Equals { @Param(ASCENDING_HASH_CODE, RANDOM_HASH_CODE, COLLISION_HASH_CODE, NON_EXISTING_HASH_CODE) var hashCodeType = "" - private var persistentMap = persistentMapOf() - private var sameMap = persistentMapOf() - private var slightlyDifferentMap = persistentMapOf() - private var veryDifferentMap = persistentMapOf() + private var persistentMap = emptyPersistentMap() + private var sameMap = emptyPersistentMap() + private var slightlyDifferentMap = emptyPersistentMap() + private var veryDifferentMap = emptyPersistentMap() @Setup fun prepare() { @@ -36,8 +37,10 @@ open class Equals { @Benchmark fun equalsTrue() = persistentMap == sameMap + @Benchmark fun nearlyEquals() = persistentMap == slightlyDifferentMap + @Benchmark fun notEquals() = persistentMap == veryDifferentMap } \ No newline at end of file diff --git a/benchmarks/commonMain/src/benchmarks/immutableMap/Get.kt b/benchmarks/commonMain/src/benchmarks/immutableMap/Get.kt index f63867d2..8b6aae79 100644 --- a/benchmarks/commonMain/src/benchmarks/immutableMap/Get.kt +++ b/benchmarks/commonMain/src/benchmarks/immutableMap/Get.kt @@ -8,6 +8,7 @@ package benchmarks.immutableMap import benchmarks.* import kotlinx.collections.immutable.persistentMapOf import kotlinx.benchmark.* +import kotlinx.collections.immutable.emptyPersistentMap @State(Scope.Benchmark) open class Get { @@ -21,7 +22,7 @@ open class Get { var hashCodeType = "" private var keys = listOf() - private var persistentMap = persistentMapOf() + private var persistentMap = emptyPersistentMap() @Setup fun prepare() { diff --git a/benchmarks/commonMain/src/benchmarks/immutableMap/Iterate.kt b/benchmarks/commonMain/src/benchmarks/immutableMap/Iterate.kt index 80c62a79..d8b14e22 100644 --- a/benchmarks/commonMain/src/benchmarks/immutableMap/Iterate.kt +++ b/benchmarks/commonMain/src/benchmarks/immutableMap/Iterate.kt @@ -8,6 +8,7 @@ package benchmarks.immutableMap import benchmarks.* import kotlinx.collections.immutable.persistentMapOf import kotlinx.benchmark.* +import kotlinx.collections.immutable.emptyPersistentMap @State(Scope.Benchmark) open class Iterate { @@ -20,7 +21,7 @@ open class Iterate { @Param(ASCENDING_HASH_CODE, RANDOM_HASH_CODE, COLLISION_HASH_CODE) var hashCodeType = "" - private var persistentMap = persistentMapOf() + private var persistentMap = emptyPersistentMap() @Setup fun prepare() { diff --git a/benchmarks/commonMain/src/benchmarks/immutableMap/PutAll.kt b/benchmarks/commonMain/src/benchmarks/immutableMap/PutAll.kt index be432bef..8805a288 100644 --- a/benchmarks/commonMain/src/benchmarks/immutableMap/PutAll.kt +++ b/benchmarks/commonMain/src/benchmarks/immutableMap/PutAll.kt @@ -8,6 +8,7 @@ package benchmarks.immutableMap import benchmarks.* import kotlinx.collections.immutable.PersistentMap import kotlinx.benchmark.* +import kotlinx.collections.immutable.emptyPersistentMap import kotlinx.collections.immutable.persistentMapOf @State(Scope.Benchmark) @@ -21,10 +22,10 @@ open class PutAll { @Param(ASCENDING_HASH_CODE, RANDOM_HASH_CODE, COLLISION_HASH_CODE) var hashCodeType = "" - private var lhs = persistentMapOf() - private var lhsSmall = persistentMapOf() - private var rhs = persistentMapOf() - private var rhsSmall = persistentMapOf() + private var lhs = emptyPersistentMap() + private var lhsSmall = emptyPersistentMap() + private var rhs = emptyPersistentMap() + private var rhsSmall = emptyPersistentMap() @Setup fun prepare() { diff --git a/benchmarks/commonMain/src/benchmarks/immutableMap/Remove.kt b/benchmarks/commonMain/src/benchmarks/immutableMap/Remove.kt index 345c0d2b..4bcb6011 100644 --- a/benchmarks/commonMain/src/benchmarks/immutableMap/Remove.kt +++ b/benchmarks/commonMain/src/benchmarks/immutableMap/Remove.kt @@ -9,6 +9,7 @@ import benchmarks.* import kotlinx.collections.immutable.PersistentMap import kotlinx.collections.immutable.persistentMapOf import kotlinx.benchmark.* +import kotlinx.collections.immutable.emptyPersistentMap @State(Scope.Benchmark) open class Remove { @@ -22,7 +23,7 @@ open class Remove { var hashCodeType = "" private var keys = listOf() - private var persistentMap = persistentMapOf() + private var persistentMap = emptyPersistentMap() @Setup fun prepare() { diff --git a/benchmarks/commonMain/src/benchmarks/immutableMap/builder/Equals.kt b/benchmarks/commonMain/src/benchmarks/immutableMap/builder/Equals.kt index c001a15a..8dda07d4 100644 --- a/benchmarks/commonMain/src/benchmarks/immutableMap/builder/Equals.kt +++ b/benchmarks/commonMain/src/benchmarks/immutableMap/builder/Equals.kt @@ -7,6 +7,7 @@ package benchmarks.immutableMap.builder import benchmarks.* import kotlinx.benchmark.* +import kotlinx.collections.immutable.emptyPersistentMap import kotlinx.collections.immutable.persistentMapOf @State(Scope.Benchmark) @@ -20,10 +21,10 @@ open class Equals { @Param(ASCENDING_HASH_CODE, RANDOM_HASH_CODE, COLLISION_HASH_CODE, NON_EXISTING_HASH_CODE) var hashCodeType = "" - private var persistentMap = persistentMapOf().builder() - private var sameMap = persistentMapOf().builder() - private var slightlyDifferentMap = persistentMapOf().builder() - private var veryDifferentMap = persistentMapOf().builder() + private var persistentMap = emptyPersistentMap().builder() + private var sameMap = emptyPersistentMap().builder() + private var slightlyDifferentMap = emptyPersistentMap().builder() + private var veryDifferentMap = emptyPersistentMap().builder() @Setup fun prepare() { @@ -38,8 +39,10 @@ open class Equals { @Benchmark fun equalsTrue() = persistentMap == sameMap + @Benchmark fun nearlyEquals() = persistentMap == slightlyDifferentMap + @Benchmark fun notEquals() = persistentMap == veryDifferentMap diff --git a/benchmarks/commonMain/src/benchmarks/immutableMap/builder/Get.kt b/benchmarks/commonMain/src/benchmarks/immutableMap/builder/Get.kt index d34b6da5..40e63bf5 100644 --- a/benchmarks/commonMain/src/benchmarks/immutableMap/builder/Get.kt +++ b/benchmarks/commonMain/src/benchmarks/immutableMap/builder/Get.kt @@ -8,6 +8,7 @@ package benchmarks.immutableMap.builder import benchmarks.* import kotlinx.collections.immutable.persistentMapOf import kotlinx.benchmark.* +import kotlinx.collections.immutable.emptyPersistentMap @State(Scope.Benchmark) open class Get { @@ -24,7 +25,7 @@ open class Get { var immutablePercentage: Double = 0.0 private var keys = listOf() - private var builder = persistentMapOf().builder() + private var builder = emptyPersistentMap().builder() @Setup fun prepare() { diff --git a/benchmarks/commonMain/src/benchmarks/immutableMap/builder/Iterate.kt b/benchmarks/commonMain/src/benchmarks/immutableMap/builder/Iterate.kt index 9de1c51b..daa5be5c 100644 --- a/benchmarks/commonMain/src/benchmarks/immutableMap/builder/Iterate.kt +++ b/benchmarks/commonMain/src/benchmarks/immutableMap/builder/Iterate.kt @@ -8,6 +8,7 @@ package benchmarks.immutableMap.builder import benchmarks.* import kotlinx.collections.immutable.persistentMapOf import kotlinx.benchmark.* +import kotlinx.collections.immutable.emptyPersistentMap @State(Scope.Benchmark) open class Iterate { @@ -23,7 +24,7 @@ open class Iterate { @Param(IP_100, IP_99_09, IP_95, IP_70, IP_50, IP_30, IP_0) var immutablePercentage: Double = 0.0 - private var builder = persistentMapOf().builder() + private var builder = emptyPersistentMap().builder() @Setup fun prepare() { diff --git a/benchmarks/commonMain/src/benchmarks/immutableMap/utils.kt b/benchmarks/commonMain/src/benchmarks/immutableMap/utils.kt index d2f9f08e..ce9238dd 100644 --- a/benchmarks/commonMain/src/benchmarks/immutableMap/utils.kt +++ b/benchmarks/commonMain/src/benchmarks/immutableMap/utils.kt @@ -6,16 +6,14 @@ package benchmarks.immutableMap import benchmarks.* -import kotlinx.collections.immutable.PersistentMap -import kotlinx.collections.immutable.persistentHashMapOf -import kotlinx.collections.immutable.persistentMapOf +import kotlinx.collections.immutable.* import kotlin.math.ceil import kotlin.math.log fun emptyPersistentMap(implementation: String): PersistentMap = when (implementation) { - HASH_IMPL -> persistentHashMapOf() - ORDERED_IMPL -> persistentMapOf() + HASH_IMPL -> emptyPersistentHashMap() + ORDERED_IMPL -> emptyPersistentMap() else -> throw AssertionError("Unknown PersistentMap implementation: $implementation") } diff --git a/benchmarks/commonMain/src/benchmarks/immutableSet/Canonicalization.kt b/benchmarks/commonMain/src/benchmarks/immutableSet/Canonicalization.kt index e2099c68..f01bff6b 100644 --- a/benchmarks/commonMain/src/benchmarks/immutableSet/Canonicalization.kt +++ b/benchmarks/commonMain/src/benchmarks/immutableSet/Canonicalization.kt @@ -9,6 +9,7 @@ import benchmarks.* import kotlinx.collections.immutable.PersistentSet import kotlinx.collections.immutable.persistentSetOf import kotlinx.benchmark.* +import kotlinx.collections.immutable.emptyPersistentSet /** @@ -35,13 +36,13 @@ open class Canonicalization { private var elements = listOf() private var elementsToRemove = listOf() - private var persistentSet = persistentSetOf() + private var persistentSet = emptyPersistentSet() /** * Expected height of this persistent set is equal to the [persistentSet]'s expected height divided by 2. * Obtained by removing some elements of the [persistentSet]. */ - private var halfHeightPersistentSet = persistentSetOf() + private var halfHeightPersistentSet = emptyPersistentSet() @Setup fun prepare() { diff --git a/benchmarks/commonMain/src/benchmarks/immutableSet/Contains.kt b/benchmarks/commonMain/src/benchmarks/immutableSet/Contains.kt index 1a7dbdff..36de6d17 100644 --- a/benchmarks/commonMain/src/benchmarks/immutableSet/Contains.kt +++ b/benchmarks/commonMain/src/benchmarks/immutableSet/Contains.kt @@ -8,6 +8,7 @@ package benchmarks.immutableSet import benchmarks.* import kotlinx.collections.immutable.persistentSetOf import kotlinx.benchmark.* +import kotlinx.collections.immutable.emptyPersistentSet @State(Scope.Benchmark) open class Contains { @@ -21,7 +22,7 @@ open class Contains { var hashCodeType = "" private var elements = listOf() - private var persistentSet = persistentSetOf() + private var persistentSet = emptyPersistentSet() @Setup fun prepare() { diff --git a/benchmarks/commonMain/src/benchmarks/immutableSet/Equals.kt b/benchmarks/commonMain/src/benchmarks/immutableSet/Equals.kt index 78db8603..2419120a 100644 --- a/benchmarks/commonMain/src/benchmarks/immutableSet/Equals.kt +++ b/benchmarks/commonMain/src/benchmarks/immutableSet/Equals.kt @@ -7,6 +7,7 @@ package benchmarks.immutableSet import benchmarks.* import kotlinx.benchmark.* +import kotlinx.collections.immutable.emptyPersistentSet import kotlinx.collections.immutable.persistentSetOf @State(Scope.Benchmark) @@ -20,10 +21,10 @@ open class Equals { @Param(ASCENDING_HASH_CODE, RANDOM_HASH_CODE, COLLISION_HASH_CODE, NON_EXISTING_HASH_CODE) var hashCodeType = "" - private var persistentSet = persistentSetOf() - private var sameSet = persistentSetOf() - private var slightlyDifferentSet = persistentSetOf() - private var veryDifferentSet = persistentSetOf() + private var persistentSet = emptyPersistentSet() + private var sameSet = emptyPersistentSet() + private var slightlyDifferentSet = emptyPersistentSet() + private var veryDifferentSet = emptyPersistentSet() @Setup fun prepare() { @@ -36,8 +37,10 @@ open class Equals { @Benchmark fun equalsTrue() = persistentSet == sameSet + @Benchmark fun nearlyEquals() = persistentSet == slightlyDifferentSet + @Benchmark fun notEquals() = persistentSet == veryDifferentSet } \ No newline at end of file diff --git a/benchmarks/commonMain/src/benchmarks/immutableSet/Iterate.kt b/benchmarks/commonMain/src/benchmarks/immutableSet/Iterate.kt index 5c05262a..42811084 100644 --- a/benchmarks/commonMain/src/benchmarks/immutableSet/Iterate.kt +++ b/benchmarks/commonMain/src/benchmarks/immutableSet/Iterate.kt @@ -8,6 +8,7 @@ package benchmarks.immutableSet import benchmarks.* import kotlinx.collections.immutable.persistentSetOf import kotlinx.benchmark.* +import kotlinx.collections.immutable.emptyPersistentSet @State(Scope.Benchmark) open class Iterate { @@ -20,7 +21,7 @@ open class Iterate { @Param(ASCENDING_HASH_CODE, RANDOM_HASH_CODE, COLLISION_HASH_CODE) var hashCodeType = "" - private var persistentSet = persistentSetOf() + private var persistentSet = emptyPersistentSet() @Setup fun prepare() { diff --git a/benchmarks/commonMain/src/benchmarks/immutableSet/Remove.kt b/benchmarks/commonMain/src/benchmarks/immutableSet/Remove.kt index c2263f7a..474b38fc 100644 --- a/benchmarks/commonMain/src/benchmarks/immutableSet/Remove.kt +++ b/benchmarks/commonMain/src/benchmarks/immutableSet/Remove.kt @@ -9,6 +9,7 @@ import benchmarks.* import kotlinx.collections.immutable.ImmutableSet import kotlinx.collections.immutable.persistentSetOf import kotlinx.benchmark.* +import kotlinx.collections.immutable.emptyPersistentSet @State(Scope.Benchmark) open class Remove { @@ -22,7 +23,7 @@ open class Remove { var hashCodeType = "" private var elements = listOf() - private var persistentSet = persistentSetOf() + private var persistentSet = emptyPersistentSet() @Setup fun prepare() { diff --git a/benchmarks/commonMain/src/benchmarks/immutableSet/builder/Contains.kt b/benchmarks/commonMain/src/benchmarks/immutableSet/builder/Contains.kt index 1f23fa24..6094e1e9 100644 --- a/benchmarks/commonMain/src/benchmarks/immutableSet/builder/Contains.kt +++ b/benchmarks/commonMain/src/benchmarks/immutableSet/builder/Contains.kt @@ -8,6 +8,7 @@ package benchmarks.immutableSet.builder import benchmarks.* import kotlinx.collections.immutable.persistentSetOf import kotlinx.benchmark.* +import kotlinx.collections.immutable.emptyPersistentSet @State(Scope.Benchmark) open class Contains { @@ -24,7 +25,7 @@ open class Contains { var immutablePercentage: Double = 0.0 private var elements = listOf() - private var builder = persistentSetOf().builder() + private var builder = emptyPersistentSet().builder() @Setup fun prepare() { diff --git a/benchmarks/commonMain/src/benchmarks/immutableSet/builder/Equals.kt b/benchmarks/commonMain/src/benchmarks/immutableSet/builder/Equals.kt index 302b1578..099e24f9 100644 --- a/benchmarks/commonMain/src/benchmarks/immutableSet/builder/Equals.kt +++ b/benchmarks/commonMain/src/benchmarks/immutableSet/builder/Equals.kt @@ -7,6 +7,7 @@ package benchmarks.immutableSet.builder import benchmarks.* import kotlinx.benchmark.* +import kotlinx.collections.immutable.emptyPersistentSet import kotlinx.collections.immutable.persistentSetOf @State(Scope.Benchmark) @@ -20,10 +21,10 @@ open class Equals { @Param(ASCENDING_HASH_CODE, RANDOM_HASH_CODE, COLLISION_HASH_CODE, NON_EXISTING_HASH_CODE) var hashCodeType = "" - private var persistentSet = persistentSetOf().builder() - private var sameSet = persistentSetOf().builder() - private var slightlyDifferentSet = persistentSetOf().builder() - private var veryDifferentSet = persistentSetOf().builder() + private var persistentSet = emptyPersistentSet().builder() + private var sameSet = emptyPersistentSet().builder() + private var slightlyDifferentSet = emptyPersistentSet().builder() + private var veryDifferentSet = emptyPersistentSet().builder() @Setup fun prepare() { @@ -38,8 +39,10 @@ open class Equals { @Benchmark fun equalsTrue() = persistentSet == sameSet + @Benchmark fun nearlyEquals() = persistentSet == slightlyDifferentSet + @Benchmark fun notEquals() = persistentSet == veryDifferentSet } \ No newline at end of file diff --git a/benchmarks/commonMain/src/benchmarks/immutableSet/builder/Iterate.kt b/benchmarks/commonMain/src/benchmarks/immutableSet/builder/Iterate.kt index 56d055ee..8af88f42 100644 --- a/benchmarks/commonMain/src/benchmarks/immutableSet/builder/Iterate.kt +++ b/benchmarks/commonMain/src/benchmarks/immutableSet/builder/Iterate.kt @@ -8,6 +8,7 @@ package benchmarks.immutableSet.builder import benchmarks.* import kotlinx.collections.immutable.persistentSetOf import kotlinx.benchmark.* +import kotlinx.collections.immutable.emptyPersistentSet @State(Scope.Benchmark) open class Iterate { @@ -23,7 +24,7 @@ open class Iterate { @Param(IP_100, IP_99_09, IP_95, IP_70, IP_50, IP_30, IP_0) var immutablePercentage: Double = 0.0 - private var builder = persistentSetOf().builder() + private var builder = emptyPersistentSet().builder() @Setup fun prepare() { diff --git a/benchmarks/commonMain/src/benchmarks/immutableSet/utils.kt b/benchmarks/commonMain/src/benchmarks/immutableSet/utils.kt index cc06827d..fbea3f9e 100644 --- a/benchmarks/commonMain/src/benchmarks/immutableSet/utils.kt +++ b/benchmarks/commonMain/src/benchmarks/immutableSet/utils.kt @@ -6,16 +6,14 @@ package benchmarks.immutableSet import benchmarks.* -import kotlinx.collections.immutable.PersistentSet -import kotlinx.collections.immutable.persistentHashSetOf -import kotlinx.collections.immutable.persistentSetOf +import kotlinx.collections.immutable.* import kotlin.math.ceil import kotlin.math.log fun emptyPersistentSet(implementation: String): PersistentSet = when (implementation) { - HASH_IMPL -> persistentHashSetOf() - ORDERED_IMPL -> persistentSetOf() + HASH_IMPL -> emptyPersistentHashSet() + ORDERED_IMPL -> emptyPersistentSet() else -> throw AssertionError("Unknown PersistentSet implementation: $implementation") } diff --git a/benchmarks/gradle.properties b/benchmarks/gradle.properties new file mode 100644 index 00000000..32a965b1 --- /dev/null +++ b/benchmarks/gradle.properties @@ -0,0 +1,6 @@ +# +# Copyright 2016-2024 JetBrains s.r.o. +# Use of this source code is governed by the Apache 2.0 License that can be found in the LICENSE.txt file. +# + +kotlin.mpp.applyDefaultHierarchyTemplate=false diff --git a/core/api/kotlinx-collections-immutable.api b/core/api/kotlinx-collections-immutable.api index 09231a36..9eaca09a 100644 --- a/core/api/kotlinx-collections-immutable.api +++ b/core/api/kotlinx-collections-immutable.api @@ -1,4 +1,9 @@ public final class kotlinx/collections/immutable/ExtensionsKt { + public static final fun emptyPersistentHashMap ()Lkotlinx/collections/immutable/PersistentMap; + public static final fun emptyPersistentHashSet ()Lkotlinx/collections/immutable/PersistentSet; + public static final fun emptyPersistentList ()Lkotlinx/collections/immutable/PersistentList; + public static final fun emptyPersistentMap ()Lkotlinx/collections/immutable/PersistentMap; + public static final fun emptyPersistentSet ()Lkotlinx/collections/immutable/PersistentSet; public static final fun immutableHashMapOf ([Lkotlin/Pair;)Lkotlinx/collections/immutable/PersistentMap; public static final fun immutableHashSetOf ([Ljava/lang/Object;)Lkotlinx/collections/immutable/PersistentSet; public static final fun immutableListOf ()Lkotlinx/collections/immutable/PersistentList; @@ -58,16 +63,25 @@ public final class kotlinx/collections/immutable/ExtensionsKt { public static final fun putAll (Lkotlinx/collections/immutable/PersistentMap;Ljava/util/Map;)Lkotlinx/collections/immutable/PersistentMap; public static final fun putAll (Lkotlinx/collections/immutable/PersistentMap;Lkotlin/sequences/Sequence;)Lkotlinx/collections/immutable/PersistentMap; public static final fun putAll (Lkotlinx/collections/immutable/PersistentMap;[Lkotlin/Pair;)Lkotlinx/collections/immutable/PersistentMap; + public static final fun toImmutableHashMap (Ljava/lang/Iterable;)Lkotlinx/collections/immutable/ImmutableMap; + public static final fun toImmutableHashMap (Lkotlin/sequences/Sequence;)Lkotlinx/collections/immutable/ImmutableMap; + public static final fun toImmutableHashMap ([Lkotlin/Pair;)Lkotlinx/collections/immutable/ImmutableMap; public static final fun toImmutableList (Ljava/lang/CharSequence;)Lkotlinx/collections/immutable/ImmutableList; public static final fun toImmutableList (Ljava/lang/Iterable;)Lkotlinx/collections/immutable/ImmutableList; public static final fun toImmutableList (Lkotlin/sequences/Sequence;)Lkotlinx/collections/immutable/ImmutableList; public static final fun toImmutableList ([Ljava/lang/Object;)Lkotlinx/collections/immutable/ImmutableList; + public static final fun toImmutableMap (Ljava/lang/Iterable;)Lkotlinx/collections/immutable/ImmutableMap; public static final fun toImmutableMap (Ljava/util/Map;)Lkotlinx/collections/immutable/ImmutableMap; + public static final fun toImmutableMap (Lkotlin/sequences/Sequence;)Lkotlinx/collections/immutable/ImmutableMap; + public static final fun toImmutableMap ([Lkotlin/Pair;)Lkotlinx/collections/immutable/ImmutableMap; public static final fun toImmutableSet (Ljava/lang/CharSequence;)Lkotlinx/collections/immutable/PersistentSet; public static final fun toImmutableSet (Ljava/lang/Iterable;)Lkotlinx/collections/immutable/ImmutableSet; public static final fun toImmutableSet (Lkotlin/sequences/Sequence;)Lkotlinx/collections/immutable/ImmutableSet; public static final fun toImmutableSet ([Ljava/lang/Object;)Lkotlinx/collections/immutable/ImmutableSet; + public static final fun toPersistentHashMap (Ljava/lang/Iterable;)Lkotlinx/collections/immutable/PersistentMap; public static final fun toPersistentHashMap (Ljava/util/Map;)Lkotlinx/collections/immutable/PersistentMap; + public static final fun toPersistentHashMap (Lkotlin/sequences/Sequence;)Lkotlinx/collections/immutable/PersistentMap; + public static final fun toPersistentHashMap ([Lkotlin/Pair;)Lkotlinx/collections/immutable/PersistentMap; public static final fun toPersistentHashSet (Ljava/lang/CharSequence;)Lkotlinx/collections/immutable/PersistentSet; public static final fun toPersistentHashSet (Ljava/lang/Iterable;)Lkotlinx/collections/immutable/PersistentSet; public static final fun toPersistentHashSet (Lkotlin/sequences/Sequence;)Lkotlinx/collections/immutable/PersistentSet; @@ -76,7 +90,10 @@ public final class kotlinx/collections/immutable/ExtensionsKt { public static final fun toPersistentList (Ljava/lang/Iterable;)Lkotlinx/collections/immutable/PersistentList; public static final fun toPersistentList (Lkotlin/sequences/Sequence;)Lkotlinx/collections/immutable/PersistentList; public static final fun toPersistentList ([Ljava/lang/Object;)Lkotlinx/collections/immutable/PersistentList; + public static final fun toPersistentMap (Ljava/lang/Iterable;)Lkotlinx/collections/immutable/PersistentMap; public static final fun toPersistentMap (Ljava/util/Map;)Lkotlinx/collections/immutable/PersistentMap; + public static final fun toPersistentMap (Lkotlin/sequences/Sequence;)Lkotlinx/collections/immutable/PersistentMap; + public static final fun toPersistentMap ([Lkotlin/Pair;)Lkotlinx/collections/immutable/PersistentMap; public static final fun toPersistentSet (Ljava/lang/CharSequence;)Lkotlinx/collections/immutable/PersistentSet; public static final fun toPersistentSet (Ljava/lang/Iterable;)Lkotlinx/collections/immutable/PersistentSet; public static final fun toPersistentSet (Lkotlin/sequences/Sequence;)Lkotlinx/collections/immutable/PersistentSet; diff --git a/core/commonMain/src/extensions.kt b/core/commonMain/src/extensions.kt index 57d289fa..d2b67b1e 100644 --- a/core/commonMain/src/extensions.kt +++ b/core/commonMain/src/extensions.kt @@ -441,6 +441,13 @@ public operator fun PersistentMap.minus(keys: Sequence): Per = mutate { it.minusAssign(keys) } +/** + * Returns an empty persistent list. + * + * @since 0.4 + */ +public fun emptyPersistentList(): PersistentList = persistentVectorOf() + /** * Returns a new persistent list of the specified elements. */ @@ -449,9 +456,16 @@ public fun persistentListOf(vararg elements: E): PersistentList = persist /** * Returns an empty persistent list. */ -public fun persistentListOf(): PersistentList = persistentVectorOf() +public fun persistentListOf(): PersistentList = emptyPersistentList() +/** + * Returns an empty persistent set. + * + * @since 0.4 + */ +public fun emptyPersistentSet(): PersistentSet = PersistentOrderedSet.emptyOf() + /** * Returns a new persistent set with the given elements. * @@ -462,9 +476,16 @@ public fun persistentSetOf(vararg elements: E): PersistentSet = Persisten /** * Returns an empty persistent set. */ -public fun persistentSetOf(): PersistentSet = PersistentOrderedSet.emptyOf() +public fun persistentSetOf(): PersistentSet = emptyPersistentSet() +/** + * Returns an empty persistent set. + * + * @since 0.4 + */ +public fun emptyPersistentHashSet(): PersistentSet = PersistentHashSet.emptyOf() + /** * Returns a new persistent set with the given elements. * @@ -475,9 +496,16 @@ public fun persistentHashSetOf(vararg elements: E): PersistentSet = Persi /** * Returns an empty persistent set. */ -public fun persistentHashSetOf(): PersistentSet = PersistentHashSet.emptyOf() +public fun persistentHashSetOf(): PersistentSet = emptyPersistentHashSet() +/** + * Returns an empty persistent map. + * + * @since 0.4 + */ +public fun emptyPersistentMap(): PersistentMap = PersistentOrderedMap.emptyOf() + /** * Returns a new persistent map with the specified contents, given as a list of pairs * where the first component is the key and the second is the value. @@ -491,8 +519,15 @@ public fun persistentMapOf(vararg pairs: Pair): PersistentMap /** * Returns an empty persistent map. */ -public fun persistentMapOf(): PersistentMap = PersistentOrderedMap.emptyOf() +public fun persistentMapOf(): PersistentMap = emptyPersistentMap() + +/** + * Returns an empty persistent map. + * + * @since 0.4 + */ +public fun emptyPersistentHashMap(): PersistentMap = PersistentHashMap.emptyOf() /** * Returns a new persistent map with the specified contents, given as a list of pairs @@ -507,20 +542,20 @@ public fun persistentHashMapOf(vararg pairs: Pair): PersistentMap persistentHashMapOf(): PersistentMap = PersistentHashMap.emptyOf() +public fun persistentHashMapOf(): PersistentMap = emptyPersistentHashMap() /** * Returns a new persistent list of the specified elements. */ -@Deprecated("Use persistentListOf instead.", ReplaceWith("persistentListOf(*elements)")) +@Deprecated("Use persistentListOf instead.", ReplaceWith("persistentListOf(*elements)")) public fun immutableListOf(vararg elements: E): PersistentList = persistentListOf(*elements) /** * Returns an empty persistent list. */ -@Deprecated("Use persistentListOf instead.", ReplaceWith("persistentListOf()")) -public fun immutableListOf(): PersistentList = persistentListOf() +@Deprecated("Use persistentListOf instead.", ReplaceWith("persistentListOf()")) +public fun immutableListOf(): PersistentList = emptyPersistentList() /** @@ -528,14 +563,14 @@ public fun immutableListOf(): PersistentList = persistentListOf() * * Elements of the returned set are iterated in the order they were specified. */ -@Deprecated("Use persistentSetOf instead.", ReplaceWith("persistentSetOf(*elements)")) +@Deprecated("Use persistentSetOf instead.", ReplaceWith("persistentSetOf(*elements)")) public fun immutableSetOf(vararg elements: E): PersistentSet = persistentSetOf(*elements) /** * Returns an empty persistent set. */ -@Deprecated("Use persistentSetOf instead.", ReplaceWith("persistentSetOf()")) -public fun immutableSetOf(): PersistentSet = persistentSetOf() +@Deprecated("Use persistentSetOf instead.", ReplaceWith("persistentSetOf()")) +public fun immutableSetOf(): PersistentSet = emptyPersistentSet() /** @@ -543,7 +578,7 @@ public fun immutableSetOf(): PersistentSet = persistentSetOf() * * Order of the elements in the returned set is unspecified. */ -@Deprecated("Use persistentHashSetOf instead.", ReplaceWith("persistentHashSetOf(*elements)")) +@Deprecated("Use persistentHashSetOf instead.", ReplaceWith("persistentHashSetOf(*elements)")) public fun immutableHashSetOf(vararg elements: E): PersistentSet = persistentHashSetOf(*elements) @@ -555,7 +590,7 @@ public fun immutableHashSetOf(vararg elements: E): PersistentSet = persis * * Entries of the map are iterated in the order they were specified. */ -@Deprecated("Use persistentMapOf instead.", ReplaceWith("persistentMapOf(*pairs)")) +@Deprecated("Use persistentMapOf instead.", ReplaceWith("persistentMapOf(*pairs)")) public fun immutableMapOf(vararg pairs: Pair): PersistentMap = persistentMapOf(*pairs) /** @@ -566,7 +601,7 @@ public fun immutableMapOf(vararg pairs: Pair): PersistentMap * * Order of the entries in the returned map is unspecified. */ -@Deprecated("Use persistentHashMapOf instead.", ReplaceWith("persistentHashMapOf(*pairs)")) +@Deprecated("Use persistentHashMapOf instead.", ReplaceWith("persistentHashMapOf(*pairs)")) public fun immutableHashMapOf(vararg pairs: Pair): PersistentMap = persistentHashMapOf(*pairs) @@ -601,26 +636,26 @@ public fun CharSequence.toImmutableList(): ImmutableList = toPersistentLis * If the receiver is already a persistent list, returns it as is. * If the receiver is a persistent list builder, calls `build` on it and returns the result. */ -public fun Iterable.toPersistentList(): PersistentList = - this as? PersistentList +public fun Iterable.toPersistentList(): PersistentList + = this as? PersistentList ?: (this as? PersistentList.Builder)?.build() - ?: persistentListOf() + this + ?: (emptyPersistentList() + this) /** * Returns a persistent list containing all elements of this array. */ -public fun Array.toPersistentList(): PersistentList = persistentListOf() + this +public fun Array.toPersistentList(): PersistentList = emptyPersistentList() + this /** * Returns a persistent list containing all elements of this sequence. */ -public fun Sequence.toPersistentList(): PersistentList = persistentListOf() + this +public fun Sequence.toPersistentList(): PersistentList = emptyPersistentList() + this /** * Returns a persistent list containing all characters. */ public fun CharSequence.toPersistentList(): PersistentList = - persistentListOf().mutate { this.toCollection(it) } + emptyPersistentList().mutate { this.toCollection(it) } /** @@ -630,10 +665,10 @@ public fun CharSequence.toPersistentList(): PersistentList = * * Elements of the returned set are iterated in the same order as in this collection. */ -public fun Iterable.toImmutableSet(): ImmutableSet = - this as? ImmutableSet +public fun Iterable.toImmutableSet(): ImmutableSet + = this as? ImmutableSet ?: (this as? PersistentSet.Builder)?.build() - ?: persistentSetOf() + this + ?: (emptyPersistentSet() + this) /** * Returns an immutable set of all elements of this array. @@ -665,24 +700,24 @@ public fun CharSequence.toImmutableSet(): PersistentSet = toPersistentSet( * * Elements of the returned set are iterated in the same order as in this collection. */ -public fun Iterable.toPersistentSet(): PersistentSet = - this as? PersistentOrderedSet +public fun Iterable.toPersistentSet(): PersistentSet + = this as? PersistentOrderedSet ?: (this as? PersistentOrderedSetBuilder)?.build() - ?: PersistentOrderedSet.emptyOf() + this + ?: (PersistentOrderedSet.emptyOf() + this) /** * Returns a persistent set of all elements of this array. * * Elements of the returned set are iterated in the same order as in this array. */ -public fun Array.toPersistentSet(): PersistentSet = persistentSetOf() + this +public fun Array.toPersistentSet(): PersistentSet = emptyPersistentSet() + this /** * Returns a persistent set of all elements of this sequence. * * Elements of the returned set are iterated in the same order as in this sequence. */ -public fun Sequence.toPersistentSet(): PersistentSet = persistentSetOf() + this +public fun Sequence.toPersistentSet(): PersistentSet = emptyPersistentSet() + this /** * Returns a persistent set of all characters. @@ -690,7 +725,7 @@ public fun Sequence.toPersistentSet(): PersistentSet = persistentSetOf * Elements of the returned set are iterated in the same order as in this char sequence. */ public fun CharSequence.toPersistentSet(): PersistentSet = - persistentSetOf().mutate { this.toCollection(it) } + emptyPersistentSet().mutate { this.toCollection(it) } /** @@ -702,23 +737,23 @@ public fun CharSequence.toPersistentSet(): PersistentSet = * Order of the elements in the returned set is unspecified. */ public fun Iterable.toPersistentHashSet(): PersistentSet - = this as? PersistentHashSet + = this as? PersistentHashSet ?: (this as? PersistentHashSetBuilder)?.build() - ?: PersistentHashSet.emptyOf() + this + ?: (PersistentHashSet.emptyOf() + this) /** * Returns a persistent set of all elements of this array. * * Order of the elements in the returned set is unspecified. */ -public fun Array.toPersistentHashSet(): PersistentSet = persistentHashSetOf() + this +public fun Array.toPersistentHashSet(): PersistentSet = emptyPersistentHashSet() + this /** * Returns a persistent set of all elements of this sequence. * * Order of the elements in the returned set is unspecified. */ -public fun Sequence.toPersistentHashSet(): PersistentSet = persistentHashSetOf() + this +public fun Sequence.toPersistentHashSet(): PersistentSet = emptyPersistentHashSet() + this /** * Returns a persistent set of all characters. @@ -726,7 +761,7 @@ public fun Sequence.toPersistentHashSet(): PersistentSet = persistentH * Order of the elements in the returned set is unspecified. */ public fun CharSequence.toPersistentHashSet(): PersistentSet = - persistentHashSetOf().mutate { this.toCollection(it) } + emptyPersistentHashSet().mutate { this.toCollection(it) } /** @@ -737,9 +772,9 @@ public fun CharSequence.toPersistentHashSet(): PersistentSet = * Entries of the returned map are iterated in the same order as in this map. */ public fun Map.toImmutableMap(): ImmutableMap - = this as? ImmutableMap - ?: (this as? PersistentMap.Builder)?.build() - ?: persistentMapOf().putAll(this) + = this as? ImmutableMap + ?: (this as? PersistentMap.Builder)?.build() + ?: emptyPersistentMap().putAll(this) /** * Returns a persistent map containing all entries from this map. @@ -750,7 +785,7 @@ public fun Map.toImmutableMap(): ImmutableMap * Entries of the returned map are iterated in the same order as in this map. */ public fun Map.toPersistentMap(): PersistentMap - = this as? PersistentOrderedMap + = this as? PersistentOrderedMap ?: (this as? PersistentOrderedMapBuilder)?.build() ?: PersistentOrderedMap.emptyOf().putAll(this) @@ -762,7 +797,111 @@ public fun Map.toPersistentMap(): PersistentMap * * Order of the entries in the returned map is unspecified. */ -public fun Map.toPersistentHashMap(): PersistentMap +public fun Map.toPersistentHashMap(): PersistentMap = this as? PersistentHashMap ?: (this as? PersistentHashMapBuilder)?.build() ?: PersistentHashMap.emptyOf().putAll(this) + + +/** + * Returns a persistent map of all elements in this [Sequence] of [Pair]s, + * using [Pair.first] as [keys][ImmutableMap.keys] and [Pair.second] as [values][ImmutableMap.values]. + * + * @since 0.4 + */ +public fun Sequence>.toPersistentMap(): PersistentMap = + emptyPersistentMap().putAll(pairs = this) + +/** + * Returns an immutable map of all elements in this [Sequence] of [Pair]s, + * using [Pair.first] as [keys][ImmutableMap.keys] and [Pair.second] as [values][ImmutableMap.values]. + * + * @since 0.4 + */ +public fun Sequence>.toImmutableMap(): ImmutableMap = toPersistentMap() + +/** + * Returns a persistent map of all elements in this [Iterable] of [Pair]s, + * using [Pair.first] as [keys][ImmutableMap.keys] and [Pair.second] as [values][ImmutableMap.values]. + * + * @since 0.4 + */ +public fun Iterable>.toPersistentMap(): PersistentMap = + emptyPersistentMap().putAll(pairs = this) + +/** + * Returns an immutable map of all elements in this [Iterable] of [Pair]s, + * using [Pair.first] as [keys][ImmutableMap.keys] and [Pair.second] as [values][ImmutableMap.values]. + * + * @since 0.4 + */ +public fun Iterable>.toImmutableMap(): ImmutableMap = toPersistentMap() + +/** + * Returns a persistent map of all elements in this [Array] of [Pair]s, + * using [Pair.first] as [keys][ImmutableMap.keys] and [Pair.second] as [values][ImmutableMap.values]. + * + * @since 0.4 + */ +public fun Array>.toPersistentMap(): PersistentMap = + emptyPersistentMap().putAll(pairs = this) + +/** + * Returns an immutable map of all elements in this [Array] of [Pair]s, + * using [Pair.first] as [keys][ImmutableMap.keys] and [Pair.second] as [values][ImmutableMap.values]. + * + * @since 0.4 + */ +public fun Array>.toImmutableMap(): ImmutableMap = toPersistentMap() + + +/** + * Returns a persistent hash map of all elements in this [Sequence] of [Pair]s, + * using [Pair.first] as [keys][ImmutableMap.keys] and [Pair.second] as [values][ImmutableMap.values]. + * + * @since 0.4 + */ +public fun Sequence>.toPersistentHashMap(): PersistentMap = + emptyPersistentHashMap().putAll(pairs = this) + +/** + * Returns an immutable hash map of all elements in this [Sequence] of [Pair]s, + * using [Pair.first] as [keys][ImmutableMap.keys] and [Pair.second] as [values][ImmutableMap.values]. + * + * @since 0.4 + */ +public fun Sequence>.toImmutableHashMap(): ImmutableMap = toPersistentHashMap() + +/** + * Returns a persistent hash map of all elements in this [Iterable] of [Pair]s, + * using [Pair.first] as [keys][ImmutableMap.keys] and [Pair.second] as [values][ImmutableMap.values]. + * + * @since 0.4 + */ +public fun Iterable>.toPersistentHashMap(): PersistentMap = + emptyPersistentHashMap().putAll(pairs = this) + +/** + * Returns an immutable hash map of all elements in this [Iterable] of [Pair]s, + * using [Pair.first] as [keys][ImmutableMap.keys] and [Pair.second] as [values][ImmutableMap.values]. + * + * @since 0.4 + */ +public fun Iterable>.toImmutableHashMap(): ImmutableMap = toPersistentHashMap() + +/** + * Returns a persistent hash map of all elements in this [Array] of [Pair]s, + * using [Pair.first] as [keys][ImmutableMap.keys] and [Pair.second] as [values][ImmutableMap.values]. + * + * @since 0.4 + */ +public fun Array>.toPersistentHashMap(): PersistentMap = + emptyPersistentHashMap().putAll(pairs = this) + +/** + * Returns an immutable hash map of all elements in this [Array] of [Pair]s, + * using [Pair.first] as [keys][ImmutableMap.keys] and [Pair.second] as [values][ImmutableMap.values]. + * + * @since 0.4 + */ +public fun Array>.toImmutableHashMap(): ImmutableMap = toPersistentHashMap() diff --git a/core/commonTest/src/contract/list/ImmutableListTest.kt b/core/commonTest/src/contract/list/ImmutableListTest.kt index 76883a04..a025d6f8 100644 --- a/core/commonTest/src/contract/list/ImmutableListTest.kt +++ b/core/commonTest/src/contract/list/ImmutableListTest.kt @@ -16,9 +16,10 @@ class ImmutableListTest { private fun compareLists(expected: List, actual: List) = compare(expected, actual) { listBehavior() } - @Test fun empty() { - val empty1 = persistentListOf() - val empty2 = persistentListOf() + @Test + fun empty() { + val empty1 = emptyPersistentList() + val empty2 = emptyPersistentList() assertEquals>(empty1, empty2) assertEquals>(listOf(), empty1) assertTrue(empty1 === empty2) @@ -75,8 +76,9 @@ class ImmutableListTest { assertSame(emptyPersistent, empty.toPersistentList()) } - @Test fun addElements() { - var list = persistentListOf() + @Test + fun addElements() { + var list = emptyPersistentList() list = list.add("x") list = list.add(0, "a") list = list.addAll(list) @@ -119,7 +121,7 @@ class ImmutableListTest { @Test fun smallPersistentListFromMutableBuffer() { val list = List(33) { it } - var vector = persistentListOf().mutate { it.addAll(list) } + var vector = emptyPersistentList().mutate { it.addAll(list) } vector = vector.removeAt(vector.lastIndex) assertEquals(list.dropLast(1), vector) } @@ -134,7 +136,7 @@ class ImmutableListTest { } @Test fun builder() { - val builder = persistentListOf().builder() + val builder = emptyPersistentList().builder() "abcxaxyz12".toCollection(builder) val list = builder.build() assertEquals>(list, builder) @@ -193,17 +195,18 @@ class ImmutableListTest { compareLists(mutable, builder.build()) } - @Test fun noOperation() { - persistentListOf().testNoOperation({ clear() }, { clear() }) + @Test + fun noOperation() { + emptyPersistentList().testNoOperation({ clear() }, { clear() }) val list = "abcxaxyz12".toPersistentList() with(list) { testNoOperation({ remove('d') }, { remove('d') }) testNoOperation({ removeAll(listOf('d', 'e')) }, { removeAll(listOf('d', 'e')) }) testNoOperation({ removeAll { it.isUpperCase() } }, { removeAll { it.isUpperCase() } }) - testNoOperation({ removeAll(emptyList()) }, { removeAll(emptyList())}) - testNoOperation({ addAll(emptyList()) }, { addAll(emptyList())}) - testNoOperation({ addAll(2, emptyList()) }, { addAll(2, emptyList())}) + testNoOperation({ removeAll(emptyList()) }, { removeAll(emptyList()) }) + testNoOperation({ addAll(emptyList()) }, { addAll(emptyList()) }) + testNoOperation({ addAll(2, emptyList()) }, { addAll(2, emptyList()) }) } } @@ -215,8 +218,9 @@ class ImmutableListTest { assertTrue(this === buildResult) } - @Test fun covariantTyping() { - val listNothing = persistentListOf() + @Test + fun covariantTyping() { + val listNothing = emptyPersistentList() val listS: PersistentList = listNothing + "x" val listSN: PersistentList = listS + (null as String?) diff --git a/core/commonTest/src/contract/map/ImmutableMapTest.kt b/core/commonTest/src/contract/map/ImmutableMapTest.kt index 599f2c1c..b573c902 100644 --- a/core/commonTest/src/contract/map/ImmutableMapTest.kt +++ b/core/commonTest/src/contract/map/ImmutableMapTest.kt @@ -360,8 +360,8 @@ abstract class ImmutableMapTest { testEqualsAndHashCode(map, mapOf(*pairs)) testEqualsAndHashCode(map, persistentHashMapOf(*pairs)) testEqualsAndHashCode(map, persistentMapOf(*pairs)) - testEqualsAndHashCode(map, persistentHashMapOf().builder().apply { putAll(pairs) }) - testEqualsAndHashCode(map, persistentMapOf().builder().apply { putAll(pairs) }) + testEqualsAndHashCode(map, emptyPersistentHashMap().builder().apply { putAll(pairs) }) + testEqualsAndHashCode(map, emptyPersistentMap().builder().apply { putAll(pairs) }) } private fun testEquality(data: Array>, changed: Array>) { diff --git a/core/commonTest/src/contract/map/KT41278Test.kt b/core/commonTest/src/contract/map/KT41278Test.kt index 47041b4d..ec168a6e 100644 --- a/core/commonTest/src/contract/map/KT41278Test.kt +++ b/core/commonTest/src/contract/map/KT41278Test.kt @@ -5,6 +5,8 @@ package tests.contract.map +import kotlinx.collections.immutable.emptyPersistentHashMap +import kotlinx.collections.immutable.emptyPersistentMap import kotlinx.collections.immutable.persistentHashMapOf import kotlinx.collections.immutable.persistentMapOf import kotlin.test.Test @@ -41,7 +43,7 @@ class KT41278Test { @Test fun persistentOrderedMap() { - val mapLetterToIndex = ('a'..'z').mapIndexed { i, c -> "$c" to i }.fold(persistentMapOf()) { map, pair -> + val mapLetterToIndex = ('a'..'z').mapIndexed { i, c -> "$c" to i }.fold(emptyPersistentMap()) { map, pair -> map.put(pair.first, pair.second) } @@ -54,7 +56,7 @@ class KT41278Test { @Test fun persistentHashMap() { - val mapLetterToIndex = ('a'..'z').mapIndexed { i, c -> "$c" to i }.fold(persistentHashMapOf()) { map, pair -> + val mapLetterToIndex = ('a'..'z').mapIndexed { i, c -> "$c" to i }.fold(emptyPersistentHashMap()) { map, pair -> map.put(pair.first, pair.second) } @@ -67,7 +69,8 @@ class KT41278Test { @Test fun persistentOrderedMapBuilder() { - val mapLetterToIndex = persistentMapOf().builder().apply { putAll(('a'..'z').mapIndexed { i, c -> "$c" to i }) } + val mapLetterToIndex = + emptyPersistentMap().builder().apply { putAll(('a'..'z').mapIndexed { i, c -> "$c" to i }) } doContainsTest(mapLetterToIndex, "h", 7, ::TestMapEntry) doContainsTest(mapLetterToIndex, "h", 7, ::TestMutableMapEntry) @@ -78,7 +81,8 @@ class KT41278Test { @Test fun persistentHashMapBuilder() { - val mapLetterToIndex = persistentHashMapOf().builder().apply { putAll(('a'..'z').mapIndexed { i, c -> "$c" to i }) } + val mapLetterToIndex = emptyPersistentHashMap().builder() + .apply { putAll(('a'..'z').mapIndexed { i, c -> "$c" to i }) } doContainsTest(mapLetterToIndex, "h", 7, ::TestMapEntry) doContainsTest(mapLetterToIndex, "h", 7, ::TestMutableMapEntry) diff --git a/core/commonTest/src/contract/set/ImmutableSetTest.kt b/core/commonTest/src/contract/set/ImmutableSetTest.kt index f017ccae..ce6e871f 100644 --- a/core/commonTest/src/contract/set/ImmutableSetTest.kt +++ b/core/commonTest/src/contract/set/ImmutableSetTest.kt @@ -372,8 +372,8 @@ abstract class ImmutableSetTestBase { testEqualsAndHashCode(set, setOf(*elements)) testEqualsAndHashCode(set, persistentHashSetOf(*elements)) testEqualsAndHashCode(set, persistentSetOf(*elements)) - testEqualsAndHashCode(set, persistentHashSetOf().builder().apply { addAll(elements) }) - testEqualsAndHashCode(set, persistentSetOf().builder().apply { addAll(elements) }) + testEqualsAndHashCode(set, emptyPersistentHashSet().builder().apply { addAll(elements) }) + testEqualsAndHashCode(set, emptyPersistentSet().builder().apply { addAll(elements) }) } private fun testEquality(data: Array, changed: Array) { diff --git a/core/commonTest/src/stress/list/PersistentListBuilderTest.kt b/core/commonTest/src/stress/list/PersistentListBuilderTest.kt index 19ab0aef..2d1ab94c 100644 --- a/core/commonTest/src/stress/list/PersistentListBuilderTest.kt +++ b/core/commonTest/src/stress/list/PersistentListBuilderTest.kt @@ -6,6 +6,7 @@ package tests.stress.list import kotlinx.collections.immutable.PersistentList +import kotlinx.collections.immutable.emptyPersistentList import kotlinx.collections.immutable.persistentListOf import tests.NForAlgorithmComplexity import tests.TestPlatform @@ -24,7 +25,7 @@ class PersistentListBuilderTest : ExecutionTimeMeasuringTest() { @Test fun isEmptyTests() { - val builder = persistentListOf().builder() + val builder = emptyPersistentList().builder() assertTrue(builder.isEmpty()) @@ -45,7 +46,7 @@ class PersistentListBuilderTest : ExecutionTimeMeasuringTest() { @Test fun sizeTests() { - val builder = persistentListOf().builder() + val builder = emptyPersistentList().builder() assertTrue(builder.size == 0) @@ -64,7 +65,7 @@ class PersistentListBuilderTest : ExecutionTimeMeasuringTest() { @Test fun firstTests() { - val builder = persistentListOf().builder() + val builder = emptyPersistentList().builder() assertNull(builder.firstOrNull()) @@ -83,7 +84,7 @@ class PersistentListBuilderTest : ExecutionTimeMeasuringTest() { @Test fun lastTests() { - val builder = persistentListOf().builder() + val builder = emptyPersistentList().builder() assertNull(builder.lastOrNull()) @@ -102,7 +103,7 @@ class PersistentListBuilderTest : ExecutionTimeMeasuringTest() { @Test fun toListTest() { - val builder = persistentListOf().builder() + val builder = emptyPersistentList().builder() assertEquals(emptyList(), builder) @@ -119,7 +120,7 @@ class PersistentListBuilderTest : ExecutionTimeMeasuringTest() { @Test fun addFirstTests() { - val builder = persistentListOf().builder() + val builder = emptyPersistentList().builder() assertNull(builder.firstOrNull()) @@ -140,7 +141,7 @@ class PersistentListBuilderTest : ExecutionTimeMeasuringTest() { @Test fun addLastTests() { - val builder = persistentListOf().builder() + val builder = emptyPersistentList().builder() val elementsToAdd = NForAlgorithmComplexity.O_NN @@ -158,7 +159,7 @@ class PersistentListBuilderTest : ExecutionTimeMeasuringTest() { @Test fun removeFirstTests() { - val builder = persistentListOf().builder() + val builder = emptyPersistentList().builder() assertFailsWith { builder.removeAt(0) } @@ -180,7 +181,7 @@ class PersistentListBuilderTest : ExecutionTimeMeasuringTest() { @Test fun removeLastTests() { - val builder = persistentListOf().builder() + val builder = emptyPersistentList().builder() assertFailsWith { builder.removeAt(builder.size - 1) @@ -217,7 +218,7 @@ class PersistentListBuilderTest : ExecutionTimeMeasuringTest() { @Test fun getTests() { - val builder = persistentListOf().builder() + val builder = emptyPersistentList().builder() assertFailsWith { builder[0] @@ -243,7 +244,7 @@ class PersistentListBuilderTest : ExecutionTimeMeasuringTest() { @Test fun setTests() { - val builder = persistentListOf().builder() + val builder = emptyPersistentList().builder() assertFailsWith { builder[0] = 0 @@ -275,7 +276,7 @@ class PersistentListBuilderTest : ExecutionTimeMeasuringTest() { @Test fun subListTests() { - val builder = persistentListOf().builder() + val builder = emptyPersistentList().builder() val elementsToAdd = NForAlgorithmComplexity.O_N repeat(times = elementsToAdd) { index -> @@ -308,7 +309,7 @@ class PersistentListBuilderTest : ExecutionTimeMeasuringTest() { @Suppress("TestFunctionName") private fun PersistentList(size: Int, producer: (Int) -> E): PersistentList { - var list = persistentListOf() + var list = emptyPersistentList() repeat(times = size) { index -> list = list.add(producer(index)) } @@ -493,7 +494,7 @@ class PersistentListBuilderTest : ExecutionTimeMeasuringTest() { for (initialSize in listSizes) { val initialElements = List(initialSize) { it } - val list = initialElements.fold(persistentListOf()) { list, element -> list.add(element) } + val list = initialElements.fold(emptyPersistentList()) { list, element -> list.add(element) } val addIndex = mutableListOf( initialSize // append @@ -537,7 +538,7 @@ class PersistentListBuilderTest : ExecutionTimeMeasuringTest() { for (initialSize in listSizes) { val initialElements = List(initialSize) { it } - val list = initialElements.fold(persistentListOf()) { list, element -> list.add(element) } + val list = initialElements.fold(emptyPersistentList()) { list, element -> list.add(element) } val removeElements = mutableListOf( initialElements // all @@ -575,7 +576,7 @@ class PersistentListBuilderTest : ExecutionTimeMeasuringTest() { @Test fun randomOperationsTests() { - val vectorGen = mutableListOf(List(20) { persistentListOf() }) + val vectorGen = mutableListOf(List(20) { emptyPersistentList() }) val expected = mutableListOf(List(20) { listOf() }) repeat(times = 5) { diff --git a/core/commonTest/src/stress/list/PersistentListTest.kt b/core/commonTest/src/stress/list/PersistentListTest.kt index fa17d416..c314e263 100644 --- a/core/commonTest/src/stress/list/PersistentListTest.kt +++ b/core/commonTest/src/stress/list/PersistentListTest.kt @@ -6,6 +6,7 @@ package tests.stress.list import kotlinx.collections.immutable.PersistentList +import kotlinx.collections.immutable.emptyPersistentList import kotlinx.collections.immutable.persistentListOf import tests.NForAlgorithmComplexity import tests.distinctStringValues @@ -17,7 +18,7 @@ import kotlin.test.* class PersistentListTest : ExecutionTimeMeasuringTest() { @Test fun isEmptyTests() { - var vector = persistentListOf() + var vector = emptyPersistentList() assertTrue(vector.isEmpty()) assertFalse(vector.add("last").isEmpty()) @@ -39,7 +40,7 @@ class PersistentListTest : ExecutionTimeMeasuringTest() { @Test fun sizeTests() { - var vector = persistentListOf() + var vector = emptyPersistentList() assertTrue(vector.size == 0) assertEquals(1, vector.add(1).size) @@ -59,7 +60,7 @@ class PersistentListTest : ExecutionTimeMeasuringTest() { @Test fun firstTests() { - var vector = persistentListOf() + var vector = emptyPersistentList() assertNull(vector.firstOrNull()) assertEquals(1, vector.add(0, 1).first()) @@ -80,7 +81,7 @@ class PersistentListTest : ExecutionTimeMeasuringTest() { @Test fun lastTests() { - var vector = persistentListOf() + var vector = emptyPersistentList() assertNull(vector.lastOrNull()) assertEquals(1, vector.add(0, 1).last()) @@ -101,27 +102,27 @@ class PersistentListTest : ExecutionTimeMeasuringTest() { @Test fun toListTest() { - var vector = persistentListOf() + var vector = emptyPersistentList() assertEquals(emptyList(), vector.toList()) assertEquals(listOf(1), vector.add(1).toList()) assertEquals( - listOf(1, 2, 3, 4, 5, 6), - vector - .add(1).add(2).add(3).add(4).add(5) - .add(6) - .toList() + listOf(1, 2, 3, 4, 5, 6), + vector + .add(1).add(2).add(3).add(4).add(5) + .add(6) + .toList() ) assertEquals( - listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20), - vector - .add(1).add(2).add(3).add(4).add(5) - .add(6).add(7).add(8).add(9).add(10) - .add(11).add(12).add(13).add(14).add(15) - .add(16).add(17).add(18).add(19).add(20) - .toList() + listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20), + vector + .add(1).add(2).add(3).add(4).add(5) + .add(6).add(7).add(8).add(9).add(10) + .add(11).add(12).add(13).add(14).add(15) + .add(16).add(17).add(18).add(19).add(20) + .toList() ) val elementsToAdd = NForAlgorithmComplexity.O_NN @@ -137,7 +138,7 @@ class PersistentListTest : ExecutionTimeMeasuringTest() { @Test fun addFirstTests() { - var vector = persistentListOf() + var vector = emptyPersistentList() assertNull(vector.firstOrNull()) assertEquals(1, vector.add(0, 1).first()) @@ -160,7 +161,7 @@ class PersistentListTest : ExecutionTimeMeasuringTest() { @Test fun addLastTests() { - var vector = persistentListOf() + var vector = emptyPersistentList() assertEquals(1, vector.add(1)[0]) @@ -181,7 +182,7 @@ class PersistentListTest : ExecutionTimeMeasuringTest() { @Test fun removeFirstTests() { - var vector = persistentListOf() + var vector = emptyPersistentList() assertFailsWith { vector.removeAt(0) @@ -207,7 +208,7 @@ class PersistentListTest : ExecutionTimeMeasuringTest() { @Test fun removeLastTests() { - var vector = persistentListOf() + var vector = emptyPersistentList() assertFailsWith { vector.removeAt(vector.size - 1) @@ -246,7 +247,7 @@ class PersistentListTest : ExecutionTimeMeasuringTest() { @Test fun getTests() { - var vector = persistentListOf() + var vector = emptyPersistentList() assertFailsWith { vector[0] @@ -273,7 +274,7 @@ class PersistentListTest : ExecutionTimeMeasuringTest() { @Test fun setTests() { - var vector = persistentListOf() + var vector = emptyPersistentList() assertFailsWith { vector.set(0, 0) @@ -315,7 +316,7 @@ class PersistentListTest : ExecutionTimeMeasuringTest() { for (initialSize in listSizes) { val initialElements = List(initialSize) { it } - val list = initialElements.fold(persistentListOf()) { list, element -> list.add(element) } + val list = initialElements.fold(emptyPersistentList()) { list, element -> list.add(element) } val addIndex = mutableListOf( initialSize // append @@ -359,7 +360,7 @@ class PersistentListTest : ExecutionTimeMeasuringTest() { for (initialSize in listSizes) { val initialElements = List(initialSize) { it } - val list = initialElements.fold(persistentListOf()) { list, element -> list.add(element) } + val list = initialElements.fold(emptyPersistentList()) { list, element -> list.add(element) } val removeElements = mutableListOf( initialElements // all @@ -409,7 +410,7 @@ class PersistentListTest : ExecutionTimeMeasuringTest() { repeat(times = 1) { val lists = List(20) { mutableListOf() } - val vectors = MutableList(20) { persistentListOf() } + val vectors = MutableList(20) { emptyPersistentList() } val operationCount = NForAlgorithmComplexity.O_NlogN diff --git a/core/commonTest/src/stress/map/PersistentHashMapBuilderTest.kt b/core/commonTest/src/stress/map/PersistentHashMapBuilderTest.kt index deb20e4b..949b81be 100644 --- a/core/commonTest/src/stress/map/PersistentHashMapBuilderTest.kt +++ b/core/commonTest/src/stress/map/PersistentHashMapBuilderTest.kt @@ -6,6 +6,7 @@ package tests.stress.map import kotlinx.collections.immutable.PersistentMap +import kotlinx.collections.immutable.emptyPersistentHashMap import kotlinx.collections.immutable.persistentHashMapOf import tests.NForAlgorithmComplexity import tests.distinctStringValues @@ -20,7 +21,7 @@ class PersistentHashMapBuilderTest : ExecutionTimeMeasuringTest() { @Test fun isEmptyTests() { - val builder = persistentHashMapOf().builder() + val builder = emptyPersistentHashMap().builder() assertTrue(builder.isEmpty()) @@ -41,7 +42,7 @@ class PersistentHashMapBuilderTest : ExecutionTimeMeasuringTest() { @Test fun sizeTests() { - val builder = persistentHashMapOf().builder() + val builder = emptyPersistentHashMap().builder() assertTrue(builder.size == 0) @@ -84,7 +85,7 @@ class PersistentHashMapBuilderTest : ExecutionTimeMeasuringTest() { } } - val builder = persistentHashMapOf().builder() + val builder = emptyPersistentHashMap().builder() assertTrue(builder.keys.isEmpty()) assertTrue(builder.values.isEmpty()) @@ -110,7 +111,7 @@ class PersistentHashMapBuilderTest : ExecutionTimeMeasuringTest() { private fun testAfterRandomPut(block: (MutableMap, PersistentMap) -> Unit) { val elementsToAdd = NForAlgorithmComplexity.O_NNlogN - var map = persistentHashMapOf() + var map = emptyPersistentHashMap() val expected = hashMapOf() repeat(times = elementsToAdd) { @@ -227,7 +228,7 @@ class PersistentHashMapBuilderTest : ExecutionTimeMeasuringTest() { @Test fun removeTests() { - val builder = persistentHashMapOf().builder() + val builder = emptyPersistentHashMap().builder() val elementsToAdd = NForAlgorithmComplexity.O_NlogN @@ -245,7 +246,7 @@ class PersistentHashMapBuilderTest : ExecutionTimeMeasuringTest() { @Test fun removeBuildTests() { - val builder = persistentHashMapOf().builder() + val builder = emptyPersistentHashMap().builder() val elementsToAddToBuilder = NForAlgorithmComplexity.O_NlogN @@ -292,7 +293,7 @@ class PersistentHashMapBuilderTest : ExecutionTimeMeasuringTest() { @Test fun removeEntryTests() { - val builder = persistentHashMapOf().builder() + val builder = emptyPersistentHashMap().builder() val elementsToAdd = NForAlgorithmComplexity.O_NlogN @@ -312,7 +313,7 @@ class PersistentHashMapBuilderTest : ExecutionTimeMeasuringTest() { @Test fun getTests() { - val builder = persistentHashMapOf().builder() + val builder = emptyPersistentHashMap().builder() val elementsToAdd = NForAlgorithmComplexity.O_NNlogN @@ -335,7 +336,7 @@ class PersistentHashMapBuilderTest : ExecutionTimeMeasuringTest() { @Test fun putTests() { - val builder = persistentHashMapOf().builder() + val builder = emptyPersistentHashMap().builder() val elementsToAdd = NForAlgorithmComplexity.O_NNlogN @@ -367,7 +368,7 @@ class PersistentHashMapBuilderTest : ExecutionTimeMeasuringTest() { @Test fun collisionTests() { - val builder = persistentHashMapOf().builder() + val builder = emptyPersistentHashMap().builder() repeat(times = 2) { removeEntryPredicate -> @@ -430,7 +431,7 @@ class PersistentHashMapBuilderTest : ExecutionTimeMeasuringTest() { @Test fun randomOperationsTests() { - val mapGen = mutableListOf(List(20) { persistentHashMapOf() }) + val mapGen = mutableListOf(List(20) { emptyPersistentHashMap() }) val expected = mutableListOf(List(20) { mapOf() }) repeat(times = 5) { diff --git a/core/commonTest/src/stress/map/PersistentHashMapTest.kt b/core/commonTest/src/stress/map/PersistentHashMapTest.kt index 6eb0c08a..a25d7862 100644 --- a/core/commonTest/src/stress/map/PersistentHashMapTest.kt +++ b/core/commonTest/src/stress/map/PersistentHashMapTest.kt @@ -6,6 +6,7 @@ package tests.stress.map import kotlinx.collections.immutable.PersistentMap +import kotlinx.collections.immutable.emptyPersistentHashMap import kotlinx.collections.immutable.persistentHashMapOf import tests.NForAlgorithmComplexity import tests.distinctStringValues @@ -20,7 +21,7 @@ import kotlin.test.* class PersistentHashMapTest : ExecutionTimeMeasuringTest() { @Test fun isEmptyTests() { - var map = persistentHashMapOf() + var map = emptyPersistentHashMap() assertTrue(map.isEmpty()) assertFalse(map.put(0, "last").isEmpty()) @@ -42,7 +43,7 @@ class PersistentHashMapTest : ExecutionTimeMeasuringTest() { @Test fun sizeTests() { - var map = persistentHashMapOf() + var map = emptyPersistentHashMap() assertTrue(map.size == 0) assertEquals(1, map.put(1, 1).size) @@ -86,7 +87,7 @@ class PersistentHashMapTest : ExecutionTimeMeasuringTest() { } } - var map = persistentHashMapOf() + var map = emptyPersistentHashMap() assertTrue(map.keys.isEmpty()) assertTrue(map.values.isEmpty()) @@ -111,7 +112,7 @@ class PersistentHashMapTest : ExecutionTimeMeasuringTest() { @Test fun removeTests() { - var map = persistentHashMapOf() + var map = emptyPersistentHashMap() assertTrue(map.put(0, "0").remove(0).isEmpty()) val elementsToAdd = NForAlgorithmComplexity.O_NlogN @@ -131,7 +132,7 @@ class PersistentHashMapTest : ExecutionTimeMeasuringTest() { @Test fun removeEntryTests() { - var map = persistentHashMapOf() + var map = emptyPersistentHashMap() assertTrue(map.put(0, "0").remove(0, "0").isEmpty()) assertFalse(map.put(0, "0").remove(0, "x").isEmpty()) @@ -154,7 +155,7 @@ class PersistentHashMapTest : ExecutionTimeMeasuringTest() { @Test fun getTests() { - var map = persistentHashMapOf() + var map = emptyPersistentHashMap() assertEquals("1", map.put(1, "1")[1]) val elementsToAdd = NForAlgorithmComplexity.O_NNlogN @@ -178,7 +179,7 @@ class PersistentHashMapTest : ExecutionTimeMeasuringTest() { @Test fun putTests() { - var map = persistentHashMapOf() + var map = emptyPersistentHashMap() assertEquals("2", map.put(1, "1").put(1, "2")[1]) val elementsToAdd = NForAlgorithmComplexity.O_NNlogN @@ -211,7 +212,7 @@ class PersistentHashMapTest : ExecutionTimeMeasuringTest() { @Test fun collisionTests() { - var map = persistentHashMapOf() + var map = emptyPersistentHashMap() val oneWrapper = IntWrapper(1, 1) val twoWrapper = IntWrapper(2, 1) @@ -284,7 +285,7 @@ class PersistentHashMapTest : ExecutionTimeMeasuringTest() { repeat(times = 1) { val mutableMaps = List(10) { hashMapOf() } - val immutableMaps = MutableList(10) { persistentHashMapOf() } + val immutableMaps = MutableList(10) { emptyPersistentHashMap() } val operationCount = NForAlgorithmComplexity.O_NlogN diff --git a/core/commonTest/src/stress/set/PersistentHashSetBuilderTest.kt b/core/commonTest/src/stress/set/PersistentHashSetBuilderTest.kt index 3978b88d..43aa68e8 100644 --- a/core/commonTest/src/stress/set/PersistentHashSetBuilderTest.kt +++ b/core/commonTest/src/stress/set/PersistentHashSetBuilderTest.kt @@ -5,6 +5,7 @@ package tests.stress.set +import kotlinx.collections.immutable.emptyPersistentHashSet import kotlinx.collections.immutable.persistentHashSetOf import tests.NForAlgorithmComplexity import tests.distinctStringValues @@ -20,7 +21,7 @@ import kotlin.test.assertTrue class PersistentHashSetBuilderTest : ExecutionTimeMeasuringTest() { @Test fun isEmptyTests() { - val builder = persistentHashSetOf().builder() + val builder = emptyPersistentHashSet().builder() assertTrue(builder.isEmpty()) @@ -40,7 +41,7 @@ class PersistentHashSetBuilderTest : ExecutionTimeMeasuringTest() { @Test fun sizeTests() { - val builder = persistentHashSetOf().builder() + val builder = emptyPersistentHashSet().builder() assertTrue(builder.size == 0) @@ -64,7 +65,7 @@ class PersistentHashSetBuilderTest : ExecutionTimeMeasuringTest() { @Test fun storedElementsTests() { - val builder = persistentHashSetOf().builder() + val builder = emptyPersistentHashSet().builder() assertTrue(builder.isEmpty()) val mutableSet = mutableSetOf() @@ -91,7 +92,7 @@ class PersistentHashSetBuilderTest : ExecutionTimeMeasuringTest() { @Test fun iteratorTests() { - val builder = persistentHashSetOf().builder() + val builder = emptyPersistentHashSet().builder() assertFalse(builder.iterator().hasNext()) val mutableSet = mutableSetOf() @@ -132,7 +133,7 @@ class PersistentHashSetBuilderTest : ExecutionTimeMeasuringTest() { @Test fun removeTests() { - val builder = persistentHashSetOf().builder() + val builder = emptyPersistentHashSet().builder() val elementsToAdd = NForAlgorithmComplexity.O_NlogN @@ -150,7 +151,7 @@ class PersistentHashSetBuilderTest : ExecutionTimeMeasuringTest() { @Test fun containsTests() { - val builder = persistentHashSetOf().builder() + val builder = emptyPersistentHashSet().builder() val elementsToAdd = NForAlgorithmComplexity.O_NNlogN @@ -173,7 +174,7 @@ class PersistentHashSetBuilderTest : ExecutionTimeMeasuringTest() { @Test fun addTests() { - val builder = persistentHashSetOf().builder() + val builder = emptyPersistentHashSet().builder() val elementsToAdd = NForAlgorithmComplexity.O_NNlogN @@ -192,7 +193,7 @@ class PersistentHashSetBuilderTest : ExecutionTimeMeasuringTest() { } } repeat(times = elementsToAdd) { index -> - for (i in index until elementsToAdd ) { + for (i in index until elementsToAdd) { val element = elementsToAdd - index + i assertTrue(builder.contains(element)) @@ -210,7 +211,7 @@ class PersistentHashSetBuilderTest : ExecutionTimeMeasuringTest() { @Test fun collisionTests() { - val builder = persistentHashSetOf().builder() + val builder = emptyPersistentHashSet().builder() val elementsToAdd = NForAlgorithmComplexity.O_NlogN @@ -260,7 +261,7 @@ class PersistentHashSetBuilderTest : ExecutionTimeMeasuringTest() { @Test fun randomOperationsTests() { - val setGen = mutableListOf(List(20) { persistentHashSetOf() }) + val setGen = mutableListOf(List(20) { emptyPersistentHashSet() }) val expected = mutableListOf(List(20) { setOf() }) repeat(times = 5) { diff --git a/core/commonTest/src/stress/set/PersistentHashSetTest.kt b/core/commonTest/src/stress/set/PersistentHashSetTest.kt index e37a31d5..5d13fe3a 100644 --- a/core/commonTest/src/stress/set/PersistentHashSetTest.kt +++ b/core/commonTest/src/stress/set/PersistentHashSetTest.kt @@ -5,6 +5,7 @@ package tests.stress.set +import kotlinx.collections.immutable.emptyPersistentHashSet import kotlinx.collections.immutable.persistentHashSetOf import tests.NForAlgorithmComplexity import tests.distinctStringValues @@ -21,7 +22,7 @@ import kotlin.test.assertTrue class PersistentHashSetTest : ExecutionTimeMeasuringTest() { @Test fun isEmptyTests() { - var set = persistentHashSetOf() + var set = emptyPersistentHashSet() assertTrue(set.isEmpty()) assertFalse(set.add(0).isEmpty()) @@ -42,7 +43,7 @@ class PersistentHashSetTest : ExecutionTimeMeasuringTest() { @Test fun sizeTests() { - var set = persistentHashSetOf() + var set = emptyPersistentHashSet() assertTrue(set.size == 0) assertEquals(1, set.add(1).size) @@ -67,7 +68,7 @@ class PersistentHashSetTest : ExecutionTimeMeasuringTest() { @Test fun storedElementsTests() { - var set = persistentHashSetOf() + var set = emptyPersistentHashSet() assertTrue(set.isEmpty()) val elementsToAdd = NForAlgorithmComplexity.O_NN @@ -93,7 +94,7 @@ class PersistentHashSetTest : ExecutionTimeMeasuringTest() { @Test fun removeTests() { - var set = persistentHashSetOf() + var set = emptyPersistentHashSet() assertTrue(set.add(0).remove(0).isEmpty()) val elementsToAdd = NForAlgorithmComplexity.O_NlogN @@ -113,7 +114,7 @@ class PersistentHashSetTest : ExecutionTimeMeasuringTest() { @Test fun containsTests() { - var set = persistentHashSetOf() + var set = emptyPersistentHashSet() assertTrue(set.add("1").contains("1")) val elementsToAdd = NForAlgorithmComplexity.O_NNlogN @@ -137,7 +138,7 @@ class PersistentHashSetTest : ExecutionTimeMeasuringTest() { @Test fun addTests() { - var set = persistentHashSetOf() + var set = emptyPersistentHashSet() assertTrue(set.add(1).add(1).contains(1)) val elementsToAdd = NForAlgorithmComplexity.O_NNlogN @@ -157,7 +158,7 @@ class PersistentHashSetTest : ExecutionTimeMeasuringTest() { } } repeat(times = elementsToAdd) { index -> - for (i in index until elementsToAdd ) { + for (i in index until elementsToAdd) { val element = elementsToAdd - index + i assertTrue(set.contains(element)) @@ -175,7 +176,7 @@ class PersistentHashSetTest : ExecutionTimeMeasuringTest() { @Test fun collisionTests() { - var set = persistentHashSetOf() + var set = emptyPersistentHashSet() assertTrue(set.add(IntWrapper(1, 1)).contains(IntWrapper(1, 1))) @@ -232,7 +233,7 @@ class PersistentHashSetTest : ExecutionTimeMeasuringTest() { repeat(times = 1) { val mutableSets = List(10) { hashSetOf() } - val immutableSets = MutableList(10) { persistentHashSetOf() } + val immutableSets = MutableList(10) { emptyPersistentHashSet() } val operationCount = NForAlgorithmComplexity.O_NlogN diff --git a/core/jvmTest/src/contract/list/PersistentListGenerator.kt b/core/jvmTest/src/contract/list/PersistentListGenerator.kt index a2d95bc7..3bcd58bb 100644 --- a/core/jvmTest/src/contract/list/PersistentListGenerator.kt +++ b/core/jvmTest/src/contract/list/PersistentListGenerator.kt @@ -6,6 +6,7 @@ package tests.contract.list import com.google.common.collect.testing.TestStringListGenerator +import kotlinx.collections.immutable.emptyPersistentList import kotlinx.collections.immutable.mutate import kotlinx.collections.immutable.persistentListOf @@ -19,50 +20,50 @@ class PersistentListGenerator { object AddAll : TestStringListGenerator() { override fun create(elements: Array): List { - return persistentListOf().addAll(elements.toList()) + return emptyPersistentList().addAll(elements.toList()) } } object AddEach : TestStringListGenerator() { override fun create(elements: Array): List { - return elements.fold(persistentListOf()) { list, element -> list.add(element) } + return elements.fold(emptyPersistentList()) { list, element -> list.add(element) } } } object MutateAddAll : TestStringListGenerator() { override fun create(elements: Array): List { - return persistentListOf().mutate { it.addAll(elements.toList()) } + return emptyPersistentList().mutate { it.addAll(elements.toList()) } } } object MutateAddEach : TestStringListGenerator() { override fun create(elements: Array): List { - return persistentListOf().mutate { list -> elements.forEach { list.add(it) } } + return emptyPersistentList().mutate { list -> elements.forEach { list.add(it) } } } } object HeadSubList : TestStringListGenerator() { override fun create(elements: Array): List { - return persistentListOf() - .addAll(listOf(*elements, "f", "g")) - .subList(0, elements.size) + return emptyPersistentList() + .addAll(listOf(*elements, "f", "g")) + .subList(0, elements.size) } } object TailSubList : TestStringListGenerator() { override fun create(elements: Array): List { - return persistentListOf() - .addAll(listOf("f", "g", *elements)) - .subList(2, elements.size + 2) + return emptyPersistentList() + .addAll(listOf("f", "g", *elements)) + .subList(2, elements.size + 2) } } object MiddleSubList : TestStringListGenerator() { override fun create(elements: Array): List { - return persistentListOf() - .addAll(listOf("f", "g", *elements, "h", "i")) - .subList(2, elements.size + 2) + return emptyPersistentList() + .addAll(listOf("f", "g", *elements, "h", "i")) + .subList(2, elements.size + 2) } } @@ -76,19 +77,19 @@ class PersistentListGenerator { object AddAll : TestStringListGenerator() { override fun create(elements: Array): MutableList { - return persistentListOf().builder().apply { this.addAll(elements.toList()) } + return emptyPersistentList().builder().apply { this.addAll(elements.toList()) } } } object AddEach : TestStringListGenerator() { override fun create(elements: Array): MutableList { - return persistentListOf().builder().apply { elements.forEach { this.add(it) } } + return emptyPersistentList().builder().apply { elements.forEach { this.add(it) } } } } object AddAt : TestStringListGenerator() { override fun create(elements: Array): MutableList { - val builder = persistentListOf().builder() + val builder = emptyPersistentList().builder() val list = elements.mapIndexed { i, e -> Pair(i, e) }.toMutableList().apply { shuffle() } list.forEachIndexed { index, pair -> @@ -102,25 +103,25 @@ class PersistentListGenerator { object HeadSubList : TestStringListGenerator() { override fun create(elements: Array): MutableList { - return persistentListOf().builder() - .apply { addAll(listOf(*elements, "f", "g")) } - .subList(0, elements.size) + return emptyPersistentList().builder() + .apply { addAll(listOf(*elements, "f", "g")) } + .subList(0, elements.size) } } object TailSubList : TestStringListGenerator() { override fun create(elements: Array): MutableList { - return persistentListOf().builder() - .apply { addAll(listOf("f", "g", *elements)) } - .subList(2, elements.size + 2) + return emptyPersistentList().builder() + .apply { addAll(listOf("f", "g", *elements)) } + .subList(2, elements.size + 2) } } object MiddleSubList : TestStringListGenerator() { override fun create(elements: Array): MutableList { - return persistentListOf().builder() - .apply { addAll(listOf("f", "g", *elements, "h", "i")) } - .subList(2, elements.size + 2) + return emptyPersistentList().builder() + .apply { addAll(listOf("f", "g", *elements, "h", "i")) } + .subList(2, elements.size + 2) } } } diff --git a/core/jvmTest/src/contract/map/PersistentMapGenerator.kt b/core/jvmTest/src/contract/map/PersistentMapGenerator.kt index 856596a2..449ae65f 100644 --- a/core/jvmTest/src/contract/map/PersistentMapGenerator.kt +++ b/core/jvmTest/src/contract/map/PersistentMapGenerator.kt @@ -6,9 +6,7 @@ package tests.contract.map import com.google.common.collect.testing.TestStringMapGenerator -import kotlinx.collections.immutable.mutate -import kotlinx.collections.immutable.persistentHashMapOf -import kotlinx.collections.immutable.persistentMapOf +import kotlinx.collections.immutable.* class PersistentMapGenerator { object HashMap { @@ -21,26 +19,30 @@ class PersistentMapGenerator { object PutAll : TestStringMapGenerator() { override fun create(entries: Array>): Map { val map = mutableMapOf().apply { entries.forEach { this[it.key] = it.value } } - return persistentHashMapOf().putAll(map) + return emptyPersistentHashMap().putAll(map) } } object PutEach : TestStringMapGenerator() { override fun create(entries: Array>): Map { - return entries.fold(persistentHashMapOf()) { map, entry -> map.put(entry.key, entry.value) } + return entries.fold(emptyPersistentHashMap()) { map, entry -> map.put(entry.key, entry.value) } } } object MutatePutAll : TestStringMapGenerator() { override fun create(entries: Array>): Map { val map = mutableMapOf().apply { entries.forEach { this[it.key] = it.value } } - return persistentHashMapOf().mutate { it.putAll(map) } + return emptyPersistentHashMap().mutate { it.putAll(map) } } } object MutatePutEach : TestStringMapGenerator() { override fun create(entries: Array>): Map { - return persistentHashMapOf().mutate { builder -> entries.forEach { builder[it.key] = it.value } } + return emptyPersistentHashMap().mutate { builder -> + entries.forEach { + builder[it.key] = it.value + } + } } } @@ -54,13 +56,14 @@ class PersistentMapGenerator { object PutAll : TestStringMapGenerator() { override fun create(entries: Array>): MutableMap { val map = mutableMapOf().apply { entries.forEach { this[it.key] = it.value } } - return persistentHashMapOf().builder().apply { putAll(map) } + return emptyPersistentHashMap().builder().apply { putAll(map) } } } object PutEach : TestStringMapGenerator() { override fun create(entries: Array>): MutableMap { - return persistentHashMapOf().builder().apply { entries.forEach { this[it.key] = it.value } } + return emptyPersistentHashMap().builder() + .apply { entries.forEach { this[it.key] = it.value } } } } } @@ -76,26 +79,30 @@ class PersistentMapGenerator { object PutAll : TestStringMapGenerator() { override fun create(entries: Array>): Map { val map = mutableMapOf().apply { entries.forEach { this[it.key] = it.value } } - return persistentMapOf().putAll(map) + return emptyPersistentMap().putAll(map) } } object PutEach : TestStringMapGenerator() { override fun create(entries: Array>): Map { - return entries.fold(persistentMapOf()) { map, entry -> map.put(entry.key, entry.value) } + return entries.fold(emptyPersistentMap()) { map, entry -> map.put(entry.key, entry.value) } } } object MutatePutAll : TestStringMapGenerator() { override fun create(entries: Array>): Map { val map = mutableMapOf().apply { entries.forEach { this[it.key] = it.value } } - return persistentMapOf().mutate { it.putAll(map) } + return emptyPersistentMap().mutate { it.putAll(map) } } } object MutatePutEach : TestStringMapGenerator() { override fun create(entries: Array>): Map { - return persistentMapOf().mutate { builder -> entries.forEach { builder[it.key] = it.value } } + return emptyPersistentMap().mutate { builder -> + entries.forEach { + builder[it.key] = it.value + } + } } } @@ -109,13 +116,14 @@ class PersistentMapGenerator { object PutAll : TestStringMapGenerator() { override fun create(entries: Array>): MutableMap { val map = mutableMapOf().apply { entries.forEach { this[it.key] = it.value } } - return persistentMapOf().builder().apply { putAll(map) } + return emptyPersistentMap().builder().apply { putAll(map) } } } object PutEach : TestStringMapGenerator() { override fun create(entries: Array>): MutableMap { - return persistentMapOf().builder().apply { entries.forEach { this[it.key] = it.value } } + return emptyPersistentMap().builder() + .apply { entries.forEach { this[it.key] = it.value } } } } } diff --git a/core/jvmTest/src/contract/set/PersistentSetGenerator.kt b/core/jvmTest/src/contract/set/PersistentSetGenerator.kt index 2baac54a..95139a55 100644 --- a/core/jvmTest/src/contract/set/PersistentSetGenerator.kt +++ b/core/jvmTest/src/contract/set/PersistentSetGenerator.kt @@ -6,9 +6,7 @@ package tests.contract.set import com.google.common.collect.testing.TestStringSetGenerator -import kotlinx.collections.immutable.mutate -import kotlinx.collections.immutable.persistentHashSetOf -import kotlinx.collections.immutable.persistentSetOf +import kotlinx.collections.immutable.* class PersistentSetGenerator { object HashSet { @@ -20,25 +18,25 @@ class PersistentSetGenerator { object AddAll : TestStringSetGenerator() { override fun create(elements: Array): Set { - return persistentHashSetOf().addAll(elements.toList()) + return emptyPersistentHashSet().addAll(elements.toList()) } } object AddEach : TestStringSetGenerator() { override fun create(elements: Array): Set { - return elements.fold(persistentHashSetOf()) { set, element -> set.add(element) } + return elements.fold(emptyPersistentHashSet()) { set, element -> set.add(element) } } } object MutateAddAll : TestStringSetGenerator() { override fun create(elements: Array): Set { - return persistentHashSetOf().mutate { it.addAll(elements) } + return emptyPersistentHashSet().mutate { it.addAll(elements) } } } object MutateAddEach : TestStringSetGenerator() { override fun create(elements: Array): Set { - return persistentHashSetOf().mutate { builder -> elements.forEach { builder.add(it) } } + return emptyPersistentHashSet().mutate { builder -> elements.forEach { builder.add(it) } } } } @@ -52,13 +50,13 @@ class PersistentSetGenerator { object AddAll : TestStringSetGenerator() { override fun create(elements: Array): MutableSet { - return persistentHashSetOf().builder().apply { addAll(elements) } + return emptyPersistentHashSet().builder().apply { addAll(elements) } } } object AddEach : TestStringSetGenerator() { override fun create(elements: Array): MutableSet { - return persistentHashSetOf().builder().apply { elements.forEach { add(it) } } + return emptyPersistentHashSet().builder().apply { elements.forEach { add(it) } } } } } @@ -74,25 +72,25 @@ class PersistentSetGenerator { object AddAll : TestStringSetGenerator() { override fun create(elements: Array): Set { - return persistentSetOf().addAll(elements.toList()) + return emptyPersistentSet().addAll(elements.toList()) } } object AddEach : TestStringSetGenerator() { override fun create(elements: Array): Set { - return elements.fold(persistentSetOf()) { set, element -> set.add(element) } + return elements.fold(emptyPersistentSet()) { set, element -> set.add(element) } } } object MutateAddAll : TestStringSetGenerator() { override fun create(elements: Array): Set { - return persistentSetOf().mutate { it.addAll(elements) } + return emptyPersistentSet().mutate { it.addAll(elements) } } } object MutateAddEach : TestStringSetGenerator() { override fun create(elements: Array): Set { - return persistentSetOf().mutate { builder -> elements.forEach { builder.add(it) } } + return emptyPersistentSet().mutate { builder -> elements.forEach { builder.add(it) } } } } @@ -106,13 +104,13 @@ class PersistentSetGenerator { object AddAll : TestStringSetGenerator() { override fun create(elements: Array): MutableSet { - return persistentSetOf().builder().apply { addAll(elements) } + return emptyPersistentSet().builder().apply { addAll(elements) } } } object AddEach : TestStringSetGenerator() { override fun create(elements: Array): MutableSet { - return persistentSetOf().builder().apply { elements.forEach { add(it) } } + return emptyPersistentSet().builder().apply { elements.forEach { add(it) } } } } } diff --git a/gradle.properties b/gradle.properties index d2050515..21c36689 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,3 +3,6 @@ version=0.4 versionSuffix=SNAPSHOT org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 + +# Apple targets are disabled on non-Mac machines +kotlin.native.ignoreDisabledTargets=true