K2/Java: implement platform-dependent function filtering in JvmMappedScope

We drop Kotlin function 'remove' or 'getOrDefault' from JvmMappedScope,
if it has platform-dependent annotation, and the bound Java class scope
does not contain a function with the same signature.

#KT-57268 Fixed
This commit is contained in:
Mikhail Glukhikh
2024-01-24 16:50:47 +01:00
committed by Space Team
parent 7d584e0eb4
commit 672b5ba0d7
87 changed files with 352 additions and 373 deletions
@@ -1,6 +0,0 @@
MODULE main
CLASS EmptyMap.class
K1
---
K2
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public]
@@ -1,5 +1,3 @@
// JVM_ABI_K1_K2_DIFF: KT-57268
private object EmptyMap : Map<Any, Nothing> {
override val size: Int get() = 0
override fun isEmpty(): Boolean = true
@@ -1,6 +0,0 @@
MODULE main
CLASS EmptyStringMap.class
K1
---
K2
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public]
@@ -1,5 +1,3 @@
// JVM_ABI_K1_K2_DIFF: KT-57268
private object EmptyStringMap : Map<String, Nothing> {
override val size: Int get() = 0
override fun isEmpty(): Boolean = true
@@ -1,18 +0,0 @@
MODULE main
CLASS Map1.class
K1
---
K2
getOrDefault(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; [public, final, bridge]
K1
---
K2
getOrDefault(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object; [public, bridge]
K1
---
K2
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public, final, bridge]
K1
---
K2
remove(Ljava/lang/String;Ljava/lang/Object;)Z [public, bridge]
@@ -2,7 +2,6 @@
// WASM_MUTE_REASON: STDLIB_COLLECTION_INHERITANCE
// KJS_WITH_FULL_RUNTIME
// DONT_TARGET_EXACT_BACKEND: NATIVE
// JVM_ABI_K1_K2_DIFF: KT-57268
open class Map1 : HashMap<String, Any?>()
class Map2 : Map1()
@@ -1,6 +0,0 @@
MODULE main
CLASS A.class
K1
---
K2
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public]
-2
View File
@@ -1,5 +1,3 @@
// JVM_ABI_K1_K2_DIFF: KT-57268
class A : Map<String, String> {
override val size: Int get() = 56
@@ -1,24 +0,0 @@
MODULE main
CLASS AbstractFoo.class
K1
---
K2
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public]
CLASS StringFoo.class
K1
---
K2
getOrDefault(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; [public, final, bridge]
K1
---
K2
getOrDefault(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object; [public, bridge]
CLASS IntFoo.class
K1
---
K2
getOrDefault(ILjava/lang/Object;)Ljava/lang/Object; [public, bridge]
K1
---
K2
getOrDefault(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; [public, final, bridge]
@@ -1,5 +1,3 @@
// JVM_ABI_K1_K2_DIFF: KT-57268
var result = ""
public abstract class AbstractFoo<K, V> : Map<K, V> {