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 MyMap.class
K1
---
K2
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public]
@@ -1,5 +1,4 @@
// TARGET_BACKEND: JVM
// JVM_ABI_K1_K2_DIFF: KT-57268
class MyMap<K, V>: Map<K, V> {
override val size: Int get() = 0
@@ -1,6 +0,0 @@
MODULE main
CLASS MyMap.class
K1
---
K2
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public]
@@ -1,5 +1,4 @@
// TARGET_BACKEND: JVM
// JVM_ABI_K1_K2_DIFF: KT-57268
class MyMap<K, V>: Map<K, V> {
override val size: Int get() = 0
@@ -1,18 +0,0 @@
MODULE main
CLASS A.class
K1
---
K2
getOrDefault(Ljava/lang/Integer;Ljava/lang/String;)Ljava/lang/String; [public, bridge]
K1
---
K2
getOrDefault(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/String; [public, final, bridge]
K1
---
K2
remove(Ljava/lang/Integer;Ljava/lang/String;)Z [public, bridge]
K1
---
K2
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public, final, bridge]
@@ -1,5 +1,4 @@
// TARGET_BACKEND: JVM
// JVM_ABI_K1_K2_DIFF: KT-57268
import java.util.AbstractMap
import java.util.Collections
@@ -1,18 +0,0 @@
MODULE main
CLASS A.class
K1
---
K2
getOrDefault(Ljava/lang/Object;D)Ljava/lang/Double; [public, final, bridge]
K1
---
K2
getOrDefault(Ljava/lang/String;D)Ljava/lang/Double; [public, bridge]
K1
---
K2
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public, final, bridge]
K1
---
K2
remove(Ljava/lang/String;Ljava/lang/Double;)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
class A : HashMap<String, Double>()
@@ -93,10 +93,6 @@ MODULE main
---
K2
values
K1
---
K2
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public]
CLASS MM.class
CLASS METADATA
K1
@@ -1,5 +1,5 @@
// WITH_STDLIB
// JVM_ABI_K1_K2_DIFF: KT-57268, KT-63955, KT-63828
// JVM_ABI_K1_K2_DIFF: KT-63955, KT-63828
class Itr : Iterator<String> by ArrayList<String>().iterator()
class MItr : MutableIterator<String> by ArrayList<String>().iterator()
@@ -93,10 +93,6 @@ MODULE main
---
K2
values
K1
---
K2
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public]
CLASS MM.class
CLASS METADATA
K1
@@ -1,5 +1,5 @@
// WITH_STDLIB
// JVM_ABI_K1_K2_DIFF: KT-57268, KT-63955, KT-63828
// JVM_ABI_K1_K2_DIFF: KT-63955, KT-63828
class Itr : Iterator<String> by ArrayList<String>().iterator()
class MItr : MutableIterator<String> by ArrayList<String>().iterator()
@@ -1,6 +0,0 @@
MODULE main
CLASS M.class
K1
---
K2
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public]
@@ -1,5 +1,4 @@
// TARGET_BACKEND: JVM
// JVM_ABI_K1_K2_DIFF: KT-57268
// WITH_STDLIB
abstract class Itr : Iterator<String>
@@ -93,10 +93,6 @@ MODULE main
---
K2
values
K1
---
K2
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public]
CLASS MM.class
CLASS METADATA
K1
@@ -1,5 +1,5 @@
// WITH_STDLIB
// JVM_ABI_K1_K2_DIFF: KT-57268, KT-63955, KT-63828
// JVM_ABI_K1_K2_DIFF: KT-63955, KT-63828
class Itr : Iterator<String> by ArrayList<String>().iterator()
class MItr : MutableIterator<String> by ArrayList<String>().iterator()
@@ -93,10 +93,6 @@ MODULE main
---
K2
values
K1
---
K2
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public]
CLASS MM.class
CLASS METADATA
K1
@@ -1,5 +1,5 @@
// WITH_STDLIB
// JVM_ABI_K1_K2_DIFF: KT-57268, KT-63955, KT-63828
// JVM_ABI_K1_K2_DIFF: KT-63955, KT-63828
class Itr : Iterator<String> by ArrayList<String>().iterator()
class MItr : MutableIterator<String> by ArrayList<String>().iterator()
@@ -93,10 +93,6 @@ MODULE main
---
K2
values
K1
---
K2
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public]
CLASS MM.class
CLASS METADATA
K1
@@ -1,5 +1,5 @@
// WITH_STDLIB
// JVM_ABI_K1_K2_DIFF: KT-57268, KT-63955, KT-63828
// JVM_ABI_K1_K2_DIFF: KT-63955, KT-63828
class Itr : Iterator<String> by ArrayList<String>().iterator()
class MItr : MutableIterator<String> by ArrayList<String>().iterator()
@@ -93,10 +93,6 @@ MODULE main
---
K2
values
K1
---
K2
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public]
CLASS MM.class
CLASS METADATA
K1
@@ -1,5 +1,5 @@
// WITH_STDLIB
// JVM_ABI_K1_K2_DIFF: KT-57268
// JVM_ABI_K1_K2_DIFF: KT-63955, KT-63828
class Itr : Iterator<String> by ArrayList<String>().iterator()
class MItr : MutableIterator<String> by ArrayList<String>().iterator()
@@ -1,18 +0,0 @@
MODULE main
CLASS A.class
K1
---
K2
getOrDefault(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/String; [public, final, bridge]
K1
---
K2
getOrDefault(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; [public, bridge]
K1
---
K2
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public, final, bridge]
K1
---
K2
remove(Ljava/lang/String;Ljava/lang/String;)Z [public, bridge]
-1
View File
@@ -2,7 +2,6 @@
// DONT_TARGET_EXACT_BACKEND: NATIVE
// WASM_MUTE_REASON: STDLIB_COLLECTION_INHERITANCE
// WITH_STDLIB
// JVM_ABI_K1_K2_DIFF: KT-57268
open class A : HashMap<String, String>()
@@ -1,6 +0,0 @@
MODULE main
CLASS KMap.class
K1
---
K2
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public]
@@ -1,5 +1,4 @@
// TARGET_BACKEND: JVM
// JVM_ABI_K1_K2_DIFF: KT-57268
// FILE: J.java
@@ -1,6 +0,0 @@
MODULE main
CLASS MapA.class
K1
---
K2
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public]
@@ -1,5 +1,4 @@
// TARGET_BACKEND: JVM
// JVM_ABI_K1_K2_DIFF: KT-57268
// FILE: removeOverriddenInJava_Map.kt
@@ -1,15 +0,0 @@
MODULE main
CLASS SuspendingMutableMap.class
K1
---
K2
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public]
CLASS MapSuspendAbstractClearKt$box$1$map$1.class
K1
---
K2
getOrDefault(II)Ljava/lang/Integer; [public, bridge]
K1
---
K2
getOrDefault(Ljava/lang/Object;I)Ljava/lang/Integer; [public, final, bridge]
@@ -1,5 +1,4 @@
// WITH_STDLIB
// JVM_ABI_K1_K2_DIFF: KT-57268
import kotlin.coroutines.*
@@ -1,6 +0,0 @@
MODULE main
CLASS SuspendingMutableMap.class
K1
---
K2
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public]
@@ -1,5 +1,4 @@
// WITH_STDLIB
// JVM_ABI_K1_K2_DIFF: KT-57268
import kotlin.coroutines.*
@@ -33,7 +33,3 @@ MODULE main
---
K2
values
K1
---
K2
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public]
@@ -1,7 +1,7 @@
// WITH_STDLIB
// WORKS_WHEN_VALUE_CLASS
// LANGUAGE: +ValueClasses
// JVM_ABI_K1_K2_DIFF: KT-57268, KT-63828
// JVM_ABI_K1_K2_DIFF: KT-63828
OPTIONAL_JVM_INLINE_ANNOTATION
value class FieldValue(val value: String)
@@ -33,7 +33,3 @@ MODULE main
---
K2
values
K1
---
K2
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public]
@@ -1,7 +1,7 @@
// WITH_STDLIB
// WORKS_WHEN_VALUE_CLASS
// LANGUAGE: +ValueClasses, +GenericInlineClassParameter
// JVM_ABI_K1_K2_DIFF: KT-57268, KT-63828
// JVM_ABI_K1_K2_DIFF: KT-63828
OPTIONAL_JVM_INLINE_ANNOTATION
value class FieldValue<T: String>(val value: T)
@@ -1,10 +0,0 @@
MODULE main
CLASS ZArrayMap.class
K1
---
K2
getOrDefault-SjU93Dg([III)I [public, static]
K1
---
K2
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public]
@@ -1,7 +1,6 @@
// WITH_STDLIB
// WORKS_WHEN_VALUE_CLASS
// LANGUAGE: +ValueClasses
// JVM_ABI_K1_K2_DIFF: KT-57268
OPTIONAL_JVM_INLINE_ANNOTATION
value class Z(val x: Int)
@@ -1,10 +0,0 @@
MODULE main
CLASS ZArrayMap.class
K1
---
K2
getOrDefault-SjU93Dg([III)I [public, static]
K1
---
K2
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public]
@@ -1,7 +1,6 @@
// WITH_STDLIB
// WORKS_WHEN_VALUE_CLASS
// LANGUAGE: +ValueClasses, +GenericInlineClassParameter
// JVM_ABI_K1_K2_DIFF: KT-57268
OPTIONAL_JVM_INLINE_ANNOTATION
value class Z<T: Int>(val x: T)
@@ -43,11 +43,3 @@ MODULE main
---
K2
values
K1
---
K2
getOrDefault-impl(Ljava/util/Map;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; [public, static]
K1
---
K2
remove-impl(Ljava/util/Map;Ljava/lang/Object;Ljava/lang/Object;)Z [public, static]
@@ -33,7 +33,3 @@ MODULE main
---
K2
values
K1
---
K2
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public]
@@ -1,7 +1,7 @@
// WITH_STDLIB
// WORKS_WHEN_VALUE_CLASS
// LANGUAGE: +ValueClasses
// JVM_ABI_K1_K2_DIFF: KT-57268, KT-63828
// JVM_ABI_K1_K2_DIFF: KT-63828
OPTIONAL_JVM_INLINE_ANNOTATION
value class Wrapper(val id: Int)
@@ -33,7 +33,3 @@ MODULE main
---
K2
values
K1
---
K2
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public]
@@ -1,7 +1,7 @@
// WITH_STDLIB
// WORKS_WHEN_VALUE_CLASS
// LANGUAGE: +ValueClasses, +GenericInlineClassParameter
// JVM_ABI_K1_K2_DIFF: KT-57268, KT-63828
// JVM_ABI_K1_K2_DIFF: KT-63828
OPTIONAL_JVM_INLINE_ANNOTATION
value class Wrapper<T: Int>(val id: T)
@@ -1,6 +0,0 @@
MODULE main
CLASS test/A.class
K1
---
K2
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public]
@@ -1,6 +1,5 @@
// TARGET_BACKEND: JVM
// WITH_REFLECT
// JVM_ABI_K1_K2_DIFF: KT-57268
package test
@@ -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> {