Skip to content

Commit b6dda56

Browse files
committed
Workaround problem with no special bridges in specific collections
1 parent 2bb9afb commit b6dda56

File tree

5 files changed

+13
-0
lines changed

5 files changed

+13
-0
lines changed

core/commonMain/src/implementations/immutableMap/PersistentHashMapBuilderContentViews.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,17 @@ internal class PersistentHashMapBuilderEntries<K, V>(private val builder: Persis
3131
}
3232

3333
override fun remove(element: MutableMap.MutableEntry<K, V>): Boolean {
34+
// TODO: Eliminate this check after KT-30016 gets fixed.
35+
if ((element as Any?) !is MutableMap.MutableEntry<*, *>) return false
3436
return builder.remove(element.key, element.value)
3537
}
3638

3739
override val size: Int
3840
get() = builder.size
3941

4042
override fun contains(element: MutableMap.MutableEntry<K, V>): Boolean {
43+
// TODO: Eliminate this check after KT-30016 gets fixed.
44+
if ((element as Any?) !is MutableMap.MutableEntry<*, *>) return false
4145
return builder[element.key]?.let { candidate -> candidate == element.value }
4246
?: (element.value == null && builder.containsKey(element.key))
4347
}

core/commonMain/src/implementations/immutableMap/PersistentHashMapContentViews.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ internal class PersistentHashMapEntries<K, V>(private val map: PersistentHashMap
2323
override val size: Int get() = map.size
2424

2525
override fun contains(element: Map.Entry<K, V>): Boolean {
26+
// TODO: Eliminate this check after KT-30016 gets fixed.
27+
if ((element as Any?) !is Map.Entry<*, *>) return false
2628
return map[element.key]?.let { candidate -> candidate == element.value }
2729
?: (element.value == null && map.containsKey(element.key))
2830
}

core/commonMain/src/implementations/persistentOrderedMap/PersistentOrderedMapBuilderContentViews.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,17 @@ internal class PersistentOrderedMapBuilderEntries<K, V>(private val builder: Per
3131
}
3232

3333
override fun remove(element: MutableMap.MutableEntry<K, V>): Boolean {
34+
// TODO: Eliminate this check after KT-30016 gets fixed.
35+
if ((element as Any?) !is MutableMap.MutableEntry<*, *>) return false
3436
return builder.remove(element.key, element.value)
3537
}
3638

3739
override val size: Int
3840
get() = builder.size
3941

4042
override fun contains(element: MutableMap.MutableEntry<K, V>): Boolean {
43+
// TODO: Eliminate this check after KT-30016 gets fixed.
44+
if ((element as Any?) !is MutableMap.MutableEntry<*, *>) return false
4145
return builder[element.key]?.let { candidate -> candidate == element.value }
4246
?: (element.value == null && builder.containsKey(element.key))
4347
}

core/commonMain/src/implementations/persistentOrderedMap/PersistentOrderedMapContentViews.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ internal class PersistentOrderedMapEntries<K, V>(private val map: PersistentOrde
2323
override val size: Int get() = map.size
2424

2525
override fun contains(element: Map.Entry<K, V>): Boolean {
26+
// TODO: Eliminate this check after KT-30016 gets fixed.
27+
if ((element as Any?) !is Map.Entry<*, *>) return false
2628
return map[element.key]?.let { candidate -> candidate == element.value }
2729
?: (element.value == null && map.containsKey(element.key))
2830
}

core/commonTest/src/contract/map/ImmutableMapTest.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,7 @@ abstract class ImmutableMapTest {
171171
testMutation { this['a'] = null }
172172
testMutation { remove('x') }
173173
testMutation { clear() }
174+
testMutation { entries.remove(null as Any?) }
174175
}
175176
}
176177

0 commit comments

Comments
 (0)