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:
committed by
Space Team
parent
7d584e0eb4
commit
672b5ba0d7
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// FULL_JDK
|
||||||
// SCOPE_DUMP: SomeMap:containsKey;containsValue;get;remove, MyMap:containsKey;containsValue;get
|
// SCOPE_DUMP: SomeMap:containsKey;containsValue;get;remove, MyMap:containsKey;containsValue;get
|
||||||
|
|
||||||
// FILE: MyBaseMap.java
|
// FILE: MyBaseMap.java
|
||||||
|
|||||||
+3
-1
@@ -1,4 +1,6 @@
|
|||||||
|
// FULL_JDK
|
||||||
|
|
||||||
fun test(map: java.util.AbstractMap<String, Int>) {
|
fun test(map: java.util.AbstractMap<String, Int>) {
|
||||||
map.remove("", null)
|
map.remove("", null)
|
||||||
map.remove(null)
|
map.remove(null)
|
||||||
}
|
}
|
||||||
|
|||||||
+9
-15
@@ -7,34 +7,28 @@ package org.jetbrains.kotlin.fir.scopes.jvm
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.builtins.StandardNames
|
import org.jetbrains.kotlin.builtins.StandardNames
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.containingClassLookupTag
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
|
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
|
||||||
import org.jetbrains.kotlin.fir.declarations.hasAnnotation
|
import org.jetbrains.kotlin.fir.declarations.hasAnnotation
|
||||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
import org.jetbrains.kotlin.fir.scopes.FirTypeScope
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.fir.scopes.platformClassMapper
|
|
||||||
import org.jetbrains.kotlin.fir.scopes.unsubstitutedScope
|
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
|
||||||
|
|
||||||
internal object FirJvmPlatformDeclarationFilter {
|
internal object FirJvmPlatformDeclarationFilter {
|
||||||
fun isFunctionAvailable(function: FirSimpleFunction, session: FirSession): Boolean {
|
fun isFunctionAvailable(function: FirSimpleFunction, javaClassScope: FirTypeScope, session: FirSession): Boolean {
|
||||||
// Optimization: only run the below logic for functions named "getOrDefault" and "remove", since only two functions with these names
|
// Optimization: only run the below logic for functions named "getOrDefault" and "remove", since only two functions with these names
|
||||||
// in kotlin.collections.Map are currently annotated with @PlatformDependent.
|
// in kotlin.collections.Map are currently annotated with @PlatformDependent.
|
||||||
if (function.name.asString() != "getOrDefault" && function.name.asString() != "remove") return true
|
if (function.name !in namesToCheck) return true
|
||||||
|
|
||||||
val javaAnalogueClassId =
|
|
||||||
session.platformClassMapper.getCorrespondingPlatformClass(function.containingClassLookupTag()?.classId) ?: return true
|
|
||||||
|
|
||||||
if (!function.hasAnnotation(StandardNames.FqNames.platformDependentClassId, session)) return true
|
if (!function.hasAnnotation(StandardNames.FqNames.platformDependentClassId, session)) return true
|
||||||
|
|
||||||
val javaAnalogue = session.symbolProvider.getClassLikeSymbolByClassId(javaAnalogueClassId) as? FirClassSymbol<*> ?: return true
|
|
||||||
val scope = javaAnalogue.unsubstitutedScope(session, ScopeSession(), withForcedTypeCalculator = false, null)
|
|
||||||
var isFunctionPresentInJavaAnalogue = false
|
var isFunctionPresentInJavaAnalogue = false
|
||||||
scope.processFunctionsByName(function.name) {
|
val jvmDescriptorOfKotlinFunction = function.computeJvmDescriptor()
|
||||||
if (it.fir.computeJvmDescriptor() == function.computeJvmDescriptor()) {
|
javaClassScope.processFunctionsByName(function.name) { javaAnalogueFunctionSymbol ->
|
||||||
|
if (javaAnalogueFunctionSymbol.fir.computeJvmDescriptor() == jvmDescriptorOfKotlinFunction) {
|
||||||
isFunctionPresentInJavaAnalogue = true
|
isFunctionPresentInJavaAnalogue = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return isFunctionPresentInJavaAnalogue
|
return isFunctionPresentInJavaAnalogue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val namesToCheck = listOf("getOrDefault", "remove").map(Name::identifier)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -97,8 +97,10 @@ class JvmMappedScope(
|
|||||||
override fun processFunctionsByName(name: Name, processor: (FirNamedFunctionSymbol) -> Unit) {
|
override fun processFunctionsByName(name: Name, processor: (FirNamedFunctionSymbol) -> Unit) {
|
||||||
val declared = mutableListOf<FirNamedFunctionSymbol>()
|
val declared = mutableListOf<FirNamedFunctionSymbol>()
|
||||||
declaredMemberScope.processFunctionsByName(name) { symbol ->
|
declaredMemberScope.processFunctionsByName(name) { symbol ->
|
||||||
declared += symbol
|
if (FirJvmPlatformDeclarationFilter.isFunctionAvailable(symbol.fir, javaMappedClassUseSiteScope, session)) {
|
||||||
processor(symbol)
|
declared += symbol
|
||||||
|
processor(symbol)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val declaredSignatures: Set<String> by lazy {
|
val declaredSignatures: Set<String> by lazy {
|
||||||
|
|||||||
@@ -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
|
// TARGET_BACKEND: JVM
|
||||||
// JVM_ABI_K1_K2_DIFF: KT-57268
|
|
||||||
|
|
||||||
class MyMap<K, V>: Map<K, V> {
|
class MyMap<K, V>: Map<K, V> {
|
||||||
override val size: Int get() = 0
|
override val size: Int get() = 0
|
||||||
|
|||||||
-6
@@ -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
|
// TARGET_BACKEND: JVM
|
||||||
// JVM_ABI_K1_K2_DIFF: KT-57268
|
|
||||||
|
|
||||||
class MyMap<K, V>: Map<K, V> {
|
class MyMap<K, V>: Map<K, V> {
|
||||||
override val size: Int get() = 0
|
override val size: Int get() = 0
|
||||||
|
|||||||
-18
@@ -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
@@ -1,5 +1,4 @@
|
|||||||
// TARGET_BACKEND: JVM
|
// TARGET_BACKEND: JVM
|
||||||
// JVM_ABI_K1_K2_DIFF: KT-57268
|
|
||||||
|
|
||||||
import java.util.AbstractMap
|
import java.util.AbstractMap
|
||||||
import java.util.Collections
|
import java.util.Collections
|
||||||
|
|||||||
-18
@@ -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
|
// WASM_MUTE_REASON: STDLIB_COLLECTION_INHERITANCE
|
||||||
// KJS_WITH_FULL_RUNTIME
|
// KJS_WITH_FULL_RUNTIME
|
||||||
// DONT_TARGET_EXACT_BACKEND: NATIVE
|
// DONT_TARGET_EXACT_BACKEND: NATIVE
|
||||||
// JVM_ABI_K1_K2_DIFF: KT-57268
|
|
||||||
|
|
||||||
class A : HashMap<String, Double>()
|
class A : HashMap<String, Double>()
|
||||||
|
|
||||||
|
|||||||
-4
@@ -93,10 +93,6 @@ MODULE main
|
|||||||
---
|
---
|
||||||
K2
|
K2
|
||||||
values
|
values
|
||||||
K1
|
|
||||||
---
|
|
||||||
K2
|
|
||||||
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public]
|
|
||||||
CLASS MM.class
|
CLASS MM.class
|
||||||
CLASS METADATA
|
CLASS METADATA
|
||||||
K1
|
K1
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// WITH_STDLIB
|
// 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 Itr : Iterator<String> by ArrayList<String>().iterator()
|
||||||
class MItr : MutableIterator<String> by ArrayList<String>().iterator()
|
class MItr : MutableIterator<String> by ArrayList<String>().iterator()
|
||||||
|
|||||||
-4
@@ -93,10 +93,6 @@ MODULE main
|
|||||||
---
|
---
|
||||||
K2
|
K2
|
||||||
values
|
values
|
||||||
K1
|
|
||||||
---
|
|
||||||
K2
|
|
||||||
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public]
|
|
||||||
CLASS MM.class
|
CLASS MM.class
|
||||||
CLASS METADATA
|
CLASS METADATA
|
||||||
K1
|
K1
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// WITH_STDLIB
|
// 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 Itr : Iterator<String> by ArrayList<String>().iterator()
|
||||||
class MItr : MutableIterator<String> by ArrayList<String>().iterator()
|
class MItr : MutableIterator<String> by ArrayList<String>().iterator()
|
||||||
|
|||||||
Vendored
-6
@@ -1,6 +0,0 @@
|
|||||||
MODULE main
|
|
||||||
CLASS M.class
|
|
||||||
K1
|
|
||||||
---
|
|
||||||
K2
|
|
||||||
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public]
|
|
||||||
-1
@@ -1,5 +1,4 @@
|
|||||||
// TARGET_BACKEND: JVM
|
// TARGET_BACKEND: JVM
|
||||||
// JVM_ABI_K1_K2_DIFF: KT-57268
|
|
||||||
// WITH_STDLIB
|
// WITH_STDLIB
|
||||||
|
|
||||||
abstract class Itr : Iterator<String>
|
abstract class Itr : Iterator<String>
|
||||||
|
|||||||
-4
@@ -93,10 +93,6 @@ MODULE main
|
|||||||
---
|
---
|
||||||
K2
|
K2
|
||||||
values
|
values
|
||||||
K1
|
|
||||||
---
|
|
||||||
K2
|
|
||||||
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public]
|
|
||||||
CLASS MM.class
|
CLASS MM.class
|
||||||
CLASS METADATA
|
CLASS METADATA
|
||||||
K1
|
K1
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
// WITH_STDLIB
|
// 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 Itr : Iterator<String> by ArrayList<String>().iterator()
|
||||||
class MItr : MutableIterator<String> by ArrayList<String>().iterator()
|
class MItr : MutableIterator<String> by ArrayList<String>().iterator()
|
||||||
|
|||||||
-4
@@ -93,10 +93,6 @@ MODULE main
|
|||||||
---
|
---
|
||||||
K2
|
K2
|
||||||
values
|
values
|
||||||
K1
|
|
||||||
---
|
|
||||||
K2
|
|
||||||
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public]
|
|
||||||
CLASS MM.class
|
CLASS MM.class
|
||||||
CLASS METADATA
|
CLASS METADATA
|
||||||
K1
|
K1
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
// WITH_STDLIB
|
// 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 Itr : Iterator<String> by ArrayList<String>().iterator()
|
||||||
class MItr : MutableIterator<String> by ArrayList<String>().iterator()
|
class MItr : MutableIterator<String> by ArrayList<String>().iterator()
|
||||||
|
|||||||
Vendored
-4
@@ -93,10 +93,6 @@ MODULE main
|
|||||||
---
|
---
|
||||||
K2
|
K2
|
||||||
values
|
values
|
||||||
K1
|
|
||||||
---
|
|
||||||
K2
|
|
||||||
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public]
|
|
||||||
CLASS MM.class
|
CLASS MM.class
|
||||||
CLASS METADATA
|
CLASS METADATA
|
||||||
K1
|
K1
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
// WITH_STDLIB
|
// 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 Itr : Iterator<String> by ArrayList<String>().iterator()
|
||||||
class MItr : MutableIterator<String> by ArrayList<String>().iterator()
|
class MItr : MutableIterator<String> by ArrayList<String>().iterator()
|
||||||
|
|||||||
-4
@@ -93,10 +93,6 @@ MODULE main
|
|||||||
---
|
---
|
||||||
K2
|
K2
|
||||||
values
|
values
|
||||||
K1
|
|
||||||
---
|
|
||||||
K2
|
|
||||||
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public]
|
|
||||||
CLASS MM.class
|
CLASS MM.class
|
||||||
CLASS METADATA
|
CLASS METADATA
|
||||||
K1
|
K1
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
// WITH_STDLIB
|
// 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 Itr : Iterator<String> by ArrayList<String>().iterator()
|
||||||
class MItr : MutableIterator<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]
|
|
||||||
@@ -2,7 +2,6 @@
|
|||||||
// DONT_TARGET_EXACT_BACKEND: NATIVE
|
// DONT_TARGET_EXACT_BACKEND: NATIVE
|
||||||
// WASM_MUTE_REASON: STDLIB_COLLECTION_INHERITANCE
|
// WASM_MUTE_REASON: STDLIB_COLLECTION_INHERITANCE
|
||||||
// WITH_STDLIB
|
// WITH_STDLIB
|
||||||
// JVM_ABI_K1_K2_DIFF: KT-57268
|
|
||||||
|
|
||||||
open class A : HashMap<String, String>()
|
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
|
// TARGET_BACKEND: JVM
|
||||||
// JVM_ABI_K1_K2_DIFF: KT-57268
|
|
||||||
|
|
||||||
// FILE: J.java
|
// FILE: J.java
|
||||||
|
|
||||||
|
|||||||
-6
@@ -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
|
// TARGET_BACKEND: JVM
|
||||||
// JVM_ABI_K1_K2_DIFF: KT-57268
|
|
||||||
|
|
||||||
// FILE: removeOverriddenInJava_Map.kt
|
// FILE: removeOverriddenInJava_Map.kt
|
||||||
|
|
||||||
|
|||||||
-15
@@ -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
|
// WITH_STDLIB
|
||||||
// JVM_ABI_K1_K2_DIFF: KT-57268
|
|
||||||
|
|
||||||
import kotlin.coroutines.*
|
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
|
// WITH_STDLIB
|
||||||
// JVM_ABI_K1_K2_DIFF: KT-57268
|
|
||||||
|
|
||||||
import kotlin.coroutines.*
|
import kotlin.coroutines.*
|
||||||
|
|
||||||
|
|||||||
-4
@@ -33,7 +33,3 @@ MODULE main
|
|||||||
---
|
---
|
||||||
K2
|
K2
|
||||||
values
|
values
|
||||||
K1
|
|
||||||
---
|
|
||||||
K2
|
|
||||||
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public]
|
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
// WITH_STDLIB
|
// WITH_STDLIB
|
||||||
// WORKS_WHEN_VALUE_CLASS
|
// WORKS_WHEN_VALUE_CLASS
|
||||||
// LANGUAGE: +ValueClasses
|
// LANGUAGE: +ValueClasses
|
||||||
// JVM_ABI_K1_K2_DIFF: KT-57268, KT-63828
|
// JVM_ABI_K1_K2_DIFF: KT-63828
|
||||||
|
|
||||||
OPTIONAL_JVM_INLINE_ANNOTATION
|
OPTIONAL_JVM_INLINE_ANNOTATION
|
||||||
value class FieldValue(val value: String)
|
value class FieldValue(val value: String)
|
||||||
|
|||||||
Vendored
-4
@@ -33,7 +33,3 @@ MODULE main
|
|||||||
---
|
---
|
||||||
K2
|
K2
|
||||||
values
|
values
|
||||||
K1
|
|
||||||
---
|
|
||||||
K2
|
|
||||||
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public]
|
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
// WITH_STDLIB
|
// WITH_STDLIB
|
||||||
// WORKS_WHEN_VALUE_CLASS
|
// WORKS_WHEN_VALUE_CLASS
|
||||||
// LANGUAGE: +ValueClasses, +GenericInlineClassParameter
|
// LANGUAGE: +ValueClasses, +GenericInlineClassParameter
|
||||||
// JVM_ABI_K1_K2_DIFF: KT-57268, KT-63828
|
// JVM_ABI_K1_K2_DIFF: KT-63828
|
||||||
|
|
||||||
OPTIONAL_JVM_INLINE_ANNOTATION
|
OPTIONAL_JVM_INLINE_ANNOTATION
|
||||||
value class FieldValue<T: String>(val value: T)
|
value class FieldValue<T: String>(val value: T)
|
||||||
|
|||||||
compiler/testData/codegen/box/inlineClasses/inlineClassCollection/inlineMapOfInlineClass.jvm_abi.txt
Vendored
-10
@@ -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]
|
|
||||||
Vendored
-1
@@ -1,7 +1,6 @@
|
|||||||
// WITH_STDLIB
|
// WITH_STDLIB
|
||||||
// WORKS_WHEN_VALUE_CLASS
|
// WORKS_WHEN_VALUE_CLASS
|
||||||
// LANGUAGE: +ValueClasses
|
// LANGUAGE: +ValueClasses
|
||||||
// JVM_ABI_K1_K2_DIFF: KT-57268
|
|
||||||
|
|
||||||
OPTIONAL_JVM_INLINE_ANNOTATION
|
OPTIONAL_JVM_INLINE_ANNOTATION
|
||||||
value class Z(val x: Int)
|
value class Z(val x: Int)
|
||||||
|
|||||||
-10
@@ -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]
|
|
||||||
Vendored
-1
@@ -1,7 +1,6 @@
|
|||||||
// WITH_STDLIB
|
// WITH_STDLIB
|
||||||
// WORKS_WHEN_VALUE_CLASS
|
// WORKS_WHEN_VALUE_CLASS
|
||||||
// LANGUAGE: +ValueClasses, +GenericInlineClassParameter
|
// LANGUAGE: +ValueClasses, +GenericInlineClassParameter
|
||||||
// JVM_ABI_K1_K2_DIFF: KT-57268
|
|
||||||
|
|
||||||
OPTIONAL_JVM_INLINE_ANNOTATION
|
OPTIONAL_JVM_INLINE_ANNOTATION
|
||||||
value class Z<T: Int>(val x: T)
|
value class Z<T: Int>(val x: T)
|
||||||
|
|||||||
-8
@@ -43,11 +43,3 @@ MODULE main
|
|||||||
---
|
---
|
||||||
K2
|
K2
|
||||||
values
|
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]
|
|
||||||
|
|||||||
-4
@@ -33,7 +33,3 @@ MODULE main
|
|||||||
---
|
---
|
||||||
K2
|
K2
|
||||||
values
|
values
|
||||||
K1
|
|
||||||
---
|
|
||||||
K2
|
|
||||||
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public]
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
// WITH_STDLIB
|
// WITH_STDLIB
|
||||||
// WORKS_WHEN_VALUE_CLASS
|
// WORKS_WHEN_VALUE_CLASS
|
||||||
// LANGUAGE: +ValueClasses
|
// LANGUAGE: +ValueClasses
|
||||||
// JVM_ABI_K1_K2_DIFF: KT-57268, KT-63828
|
// JVM_ABI_K1_K2_DIFF: KT-63828
|
||||||
|
|
||||||
OPTIONAL_JVM_INLINE_ANNOTATION
|
OPTIONAL_JVM_INLINE_ANNOTATION
|
||||||
value class Wrapper(val id: Int)
|
value class Wrapper(val id: Int)
|
||||||
|
|||||||
-4
@@ -33,7 +33,3 @@ MODULE main
|
|||||||
---
|
---
|
||||||
K2
|
K2
|
||||||
values
|
values
|
||||||
K1
|
|
||||||
---
|
|
||||||
K2
|
|
||||||
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public]
|
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
// WITH_STDLIB
|
// WITH_STDLIB
|
||||||
// WORKS_WHEN_VALUE_CLASS
|
// WORKS_WHEN_VALUE_CLASS
|
||||||
// LANGUAGE: +ValueClasses, +GenericInlineClassParameter
|
// LANGUAGE: +ValueClasses, +GenericInlineClassParameter
|
||||||
// JVM_ABI_K1_K2_DIFF: KT-57268, KT-63828
|
// JVM_ABI_K1_K2_DIFF: KT-63828
|
||||||
|
|
||||||
OPTIONAL_JVM_INLINE_ANNOTATION
|
OPTIONAL_JVM_INLINE_ANNOTATION
|
||||||
value class Wrapper<T: Int>(val id: T)
|
value class Wrapper<T: Int>(val id: T)
|
||||||
|
|||||||
-6
@@ -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
|
// TARGET_BACKEND: JVM
|
||||||
// WITH_REFLECT
|
// WITH_REFLECT
|
||||||
// JVM_ABI_K1_K2_DIFF: KT-57268
|
|
||||||
|
|
||||||
package test
|
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> {
|
private object EmptyMap : Map<Any, Nothing> {
|
||||||
override val size: Int get() = 0
|
override val size: Int get() = 0
|
||||||
override fun isEmpty(): Boolean = true
|
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> {
|
private object EmptyStringMap : Map<String, Nothing> {
|
||||||
override val size: Int get() = 0
|
override val size: Int get() = 0
|
||||||
override fun isEmpty(): Boolean = true
|
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
|
// WASM_MUTE_REASON: STDLIB_COLLECTION_INHERITANCE
|
||||||
// KJS_WITH_FULL_RUNTIME
|
// KJS_WITH_FULL_RUNTIME
|
||||||
// DONT_TARGET_EXACT_BACKEND: NATIVE
|
// DONT_TARGET_EXACT_BACKEND: NATIVE
|
||||||
// JVM_ABI_K1_K2_DIFF: KT-57268
|
|
||||||
|
|
||||||
open class Map1 : HashMap<String, Any?>()
|
open class Map1 : HashMap<String, Any?>()
|
||||||
class Map2 : Map1()
|
class Map2 : Map1()
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
MODULE main
|
|
||||||
CLASS A.class
|
|
||||||
K1
|
|
||||||
---
|
|
||||||
K2
|
|
||||||
remove(Ljava/lang/Object;Ljava/lang/Object;)Z [public]
|
|
||||||
@@ -1,5 +1,3 @@
|
|||||||
// JVM_ABI_K1_K2_DIFF: KT-57268
|
|
||||||
|
|
||||||
class A : Map<String, String> {
|
class A : Map<String, String> {
|
||||||
override val size: Int get() = 56
|
override val size: Int get() = 56
|
||||||
|
|
||||||
|
|||||||
-24
@@ -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 = ""
|
var result = ""
|
||||||
|
|
||||||
public abstract class AbstractFoo<K, V> : Map<K, V> {
|
public abstract class AbstractFoo<K, V> : Map<K, V> {
|
||||||
|
|||||||
Vendored
-3
@@ -1,6 +1,3 @@
|
|||||||
// WITH_SIGNATURES
|
// WITH_SIGNATURES
|
||||||
|
|
||||||
// IGNORE_BACKEND_K2: JVM_IR
|
|
||||||
// FIR status: KT-57268 K2: extra methods `remove` and/or `getOrDefault` are generated for Map subclasses with JDK 1.6 in dependencies
|
|
||||||
|
|
||||||
abstract class ByteShortMap : Map<Byte, Short>
|
abstract class ByteShortMap : Map<Byte, Short>
|
||||||
|
|||||||
Vendored
-3
@@ -1,6 +1,3 @@
|
|||||||
// WITH_SIGNATURES
|
// WITH_SIGNATURES
|
||||||
|
|
||||||
// IGNORE_BACKEND_K2: JVM_IR
|
|
||||||
// FIR status: KT-57268 K2: extra methods `remove` and/or `getOrDefault` are generated for Map subclasses with JDK 1.6 in dependencies
|
|
||||||
|
|
||||||
abstract class GenericMap<K, V> : Map<K, V>
|
abstract class GenericMap<K, V> : Map<K, V>
|
||||||
|
|||||||
compiler/testData/codegen/bytecodeListing/collectionStubs/abstractStubSignatures/genericStringMap.kt
Vendored
-3
@@ -1,6 +1,3 @@
|
|||||||
// WITH_SIGNATURES
|
// WITH_SIGNATURES
|
||||||
|
|
||||||
// IGNORE_BACKEND_K2: JVM_IR
|
|
||||||
// FIR status: KT-57268 K2: extra methods `remove` and/or `getOrDefault` are generated for Map subclasses with JDK 1.6 in dependencies
|
|
||||||
|
|
||||||
abstract class GenericStringMap<K> : Map<K, String>
|
abstract class GenericStringMap<K> : Map<K, String>
|
||||||
|
|||||||
Vendored
-3
@@ -1,6 +1,3 @@
|
|||||||
// WITH_SIGNATURES
|
// WITH_SIGNATURES
|
||||||
|
|
||||||
// IGNORE_BACKEND_K2: JVM_IR
|
|
||||||
// FIR status: KT-57268 K2: extra methods `remove` and/or `getOrDefault` are generated for Map subclasses with JDK 1.6 in dependencies
|
|
||||||
|
|
||||||
abstract class NumberStringMap : Map<Number, String>
|
abstract class NumberStringMap : Map<Number, String>
|
||||||
|
|||||||
-3
@@ -1,8 +1,5 @@
|
|||||||
// WITH_SIGNATURES
|
// WITH_SIGNATURES
|
||||||
|
|
||||||
// IGNORE_BACKEND_K2: JVM_IR
|
|
||||||
// FIR status: KT-57268 K2: extra methods `remove` and/or `getOrDefault` are generated for Map subclasses with JDK 1.6 in dependencies
|
|
||||||
|
|
||||||
abstract class GenericMap<K, V> : Map<K, V>
|
abstract class GenericMap<K, V> : Map<K, V>
|
||||||
|
|
||||||
abstract class NumberStringMap : GenericMap<Number, String>()
|
abstract class NumberStringMap : GenericMap<Number, String>()
|
||||||
|
|||||||
compiler/testData/codegen/bytecodeListing/collectionStubs/abstractStubSignatures/stringGenericMap.kt
Vendored
-3
@@ -1,6 +1,3 @@
|
|||||||
// WITH_SIGNATURES
|
// WITH_SIGNATURES
|
||||||
|
|
||||||
// IGNORE_BACKEND_K2: JVM_IR
|
|
||||||
// FIR status: KT-57268 K2: extra methods `remove` and/or `getOrDefault` are generated for Map subclasses with JDK 1.6 in dependencies
|
|
||||||
|
|
||||||
abstract class StringGenericMap<V> : Map<String, V>
|
abstract class StringGenericMap<V> : Map<String, V>
|
||||||
|
|||||||
Vendored
+103
@@ -0,0 +1,103 @@
|
|||||||
|
MODULE main
|
||||||
|
CLASS DGenericCollection.class
|
||||||
|
CLASS METADATA
|
||||||
|
K1
|
||||||
|
getSize()I
|
||||||
|
K2
|
||||||
|
---
|
||||||
|
K1
|
||||||
|
---
|
||||||
|
K2
|
||||||
|
size
|
||||||
|
CLASS DGenericSet.class
|
||||||
|
CLASS METADATA
|
||||||
|
K1
|
||||||
|
getSize()I
|
||||||
|
K2
|
||||||
|
---
|
||||||
|
K1
|
||||||
|
---
|
||||||
|
K2
|
||||||
|
size
|
||||||
|
CLASS DGenericList.class
|
||||||
|
CLASS METADATA
|
||||||
|
K1
|
||||||
|
getSize()I
|
||||||
|
K2
|
||||||
|
---
|
||||||
|
K1
|
||||||
|
---
|
||||||
|
K2
|
||||||
|
size
|
||||||
|
CLASS DGenericMap.class
|
||||||
|
CLASS METADATA
|
||||||
|
K1
|
||||||
|
---
|
||||||
|
K2
|
||||||
|
entries
|
||||||
|
K1
|
||||||
|
getEntries()Ljava/util/Set;
|
||||||
|
K2
|
||||||
|
---
|
||||||
|
K1
|
||||||
|
getKeys()Ljava/util/Set;
|
||||||
|
K2
|
||||||
|
---
|
||||||
|
K1
|
||||||
|
getSize()I
|
||||||
|
K2
|
||||||
|
---
|
||||||
|
K1
|
||||||
|
getValues()Ljava/util/Collection;
|
||||||
|
K2
|
||||||
|
---
|
||||||
|
K1
|
||||||
|
---
|
||||||
|
K2
|
||||||
|
keys
|
||||||
|
K1
|
||||||
|
---
|
||||||
|
K2
|
||||||
|
size
|
||||||
|
K1
|
||||||
|
---
|
||||||
|
K2
|
||||||
|
values
|
||||||
|
CLASS DGenericMapEntry.class
|
||||||
|
CLASS METADATA
|
||||||
|
K1
|
||||||
|
getKey()Ljava/lang/Object;
|
||||||
|
K2
|
||||||
|
---
|
||||||
|
K1
|
||||||
|
getValue()Ljava/lang/Object;
|
||||||
|
K2
|
||||||
|
---
|
||||||
|
K1
|
||||||
|
---
|
||||||
|
K2
|
||||||
|
key
|
||||||
|
K1
|
||||||
|
---
|
||||||
|
K2
|
||||||
|
value
|
||||||
|
CLASS DGenericCollectionBySet.class
|
||||||
|
CLASS METADATA
|
||||||
|
K1
|
||||||
|
getSize()I
|
||||||
|
K2
|
||||||
|
---
|
||||||
|
K1
|
||||||
|
---
|
||||||
|
K2
|
||||||
|
size
|
||||||
|
CLASS DGenericCollectionByList.class
|
||||||
|
CLASS METADATA
|
||||||
|
K1
|
||||||
|
getSize()I
|
||||||
|
K2
|
||||||
|
---
|
||||||
|
K1
|
||||||
|
---
|
||||||
|
K2
|
||||||
|
size
|
||||||
+1
-2
@@ -1,5 +1,4 @@
|
|||||||
// IGNORE_BACKEND_K2: JVM_IR
|
// JVM_ABI_K1_K2_DIFF: KT-65323
|
||||||
// FIR status: KT-57268 K2: extra methods `remove` and/or `getOrDefault` are generated for Map subclasses with JDK 1.6 in dependencies
|
|
||||||
|
|
||||||
class DGenericIterator<T>(d: Iterator<T>) : Iterator<T> by d
|
class DGenericIterator<T>(d: Iterator<T>) : Iterator<T> by d
|
||||||
|
|
||||||
|
|||||||
Vendored
+103
@@ -0,0 +1,103 @@
|
|||||||
|
MODULE main
|
||||||
|
CLASS DStringCollection.class
|
||||||
|
CLASS METADATA
|
||||||
|
K1
|
||||||
|
getSize()I
|
||||||
|
K2
|
||||||
|
---
|
||||||
|
K1
|
||||||
|
---
|
||||||
|
K2
|
||||||
|
size
|
||||||
|
CLASS DStringSet.class
|
||||||
|
CLASS METADATA
|
||||||
|
K1
|
||||||
|
getSize()I
|
||||||
|
K2
|
||||||
|
---
|
||||||
|
K1
|
||||||
|
---
|
||||||
|
K2
|
||||||
|
size
|
||||||
|
CLASS DStringList.class
|
||||||
|
CLASS METADATA
|
||||||
|
K1
|
||||||
|
getSize()I
|
||||||
|
K2
|
||||||
|
---
|
||||||
|
K1
|
||||||
|
---
|
||||||
|
K2
|
||||||
|
size
|
||||||
|
CLASS DStringMap.class
|
||||||
|
CLASS METADATA
|
||||||
|
K1
|
||||||
|
---
|
||||||
|
K2
|
||||||
|
entries
|
||||||
|
K1
|
||||||
|
getEntries()Ljava/util/Set;
|
||||||
|
K2
|
||||||
|
---
|
||||||
|
K1
|
||||||
|
getKeys()Ljava/util/Set;
|
||||||
|
K2
|
||||||
|
---
|
||||||
|
K1
|
||||||
|
getSize()I
|
||||||
|
K2
|
||||||
|
---
|
||||||
|
K1
|
||||||
|
getValues()Ljava/util/Collection;
|
||||||
|
K2
|
||||||
|
---
|
||||||
|
K1
|
||||||
|
---
|
||||||
|
K2
|
||||||
|
keys
|
||||||
|
K1
|
||||||
|
---
|
||||||
|
K2
|
||||||
|
size
|
||||||
|
K1
|
||||||
|
---
|
||||||
|
K2
|
||||||
|
values
|
||||||
|
CLASS DStringMapEntry.class
|
||||||
|
CLASS METADATA
|
||||||
|
K1
|
||||||
|
getKey()Ljava/lang/String;
|
||||||
|
K2
|
||||||
|
---
|
||||||
|
K1
|
||||||
|
getValue()Ljava/lang/Number;
|
||||||
|
K2
|
||||||
|
---
|
||||||
|
K1
|
||||||
|
---
|
||||||
|
K2
|
||||||
|
key
|
||||||
|
K1
|
||||||
|
---
|
||||||
|
K2
|
||||||
|
value
|
||||||
|
CLASS DStringCollectionBySet.class
|
||||||
|
CLASS METADATA
|
||||||
|
K1
|
||||||
|
getSize()I
|
||||||
|
K2
|
||||||
|
---
|
||||||
|
K1
|
||||||
|
---
|
||||||
|
K2
|
||||||
|
size
|
||||||
|
CLASS DStringCollectionByList.class
|
||||||
|
CLASS METADATA
|
||||||
|
K1
|
||||||
|
getSize()I
|
||||||
|
K2
|
||||||
|
---
|
||||||
|
K1
|
||||||
|
---
|
||||||
|
K2
|
||||||
|
size
|
||||||
+1
-2
@@ -1,5 +1,4 @@
|
|||||||
// IGNORE_BACKEND_K2: JVM_IR
|
// JVM_ABI_K1_K2_DIFF: KT-65323
|
||||||
// FIR status: KT-57268 K2: extra methods `remove` and/or `getOrDefault` are generated for Map subclasses with JDK 1.6 in dependencies
|
|
||||||
|
|
||||||
class DStringIterator(d: Iterator<String>) : Iterator<String> by d
|
class DStringIterator(d: Iterator<String>) : Iterator<String> by d
|
||||||
|
|
||||||
|
|||||||
Vendored
+103
@@ -0,0 +1,103 @@
|
|||||||
|
MODULE main
|
||||||
|
CLASS DIntCollection.class
|
||||||
|
CLASS METADATA
|
||||||
|
K1
|
||||||
|
getSize()I
|
||||||
|
K2
|
||||||
|
---
|
||||||
|
K1
|
||||||
|
---
|
||||||
|
K2
|
||||||
|
size
|
||||||
|
CLASS DIntSet.class
|
||||||
|
CLASS METADATA
|
||||||
|
K1
|
||||||
|
getSize()I
|
||||||
|
K2
|
||||||
|
---
|
||||||
|
K1
|
||||||
|
---
|
||||||
|
K2
|
||||||
|
size
|
||||||
|
CLASS DIntList.class
|
||||||
|
CLASS METADATA
|
||||||
|
K1
|
||||||
|
getSize()I
|
||||||
|
K2
|
||||||
|
---
|
||||||
|
K1
|
||||||
|
---
|
||||||
|
K2
|
||||||
|
size
|
||||||
|
CLASS DIntMap.class
|
||||||
|
CLASS METADATA
|
||||||
|
K1
|
||||||
|
---
|
||||||
|
K2
|
||||||
|
entries
|
||||||
|
K1
|
||||||
|
getEntries()Ljava/util/Set;
|
||||||
|
K2
|
||||||
|
---
|
||||||
|
K1
|
||||||
|
getKeys()Ljava/util/Set;
|
||||||
|
K2
|
||||||
|
---
|
||||||
|
K1
|
||||||
|
getSize()I
|
||||||
|
K2
|
||||||
|
---
|
||||||
|
K1
|
||||||
|
getValues()Ljava/util/Collection;
|
||||||
|
K2
|
||||||
|
---
|
||||||
|
K1
|
||||||
|
---
|
||||||
|
K2
|
||||||
|
keys
|
||||||
|
K1
|
||||||
|
---
|
||||||
|
K2
|
||||||
|
size
|
||||||
|
K1
|
||||||
|
---
|
||||||
|
K2
|
||||||
|
values
|
||||||
|
CLASS DIntMapEntry.class
|
||||||
|
CLASS METADATA
|
||||||
|
K1
|
||||||
|
getKey()Ljava/lang/Integer;
|
||||||
|
K2
|
||||||
|
---
|
||||||
|
K1
|
||||||
|
getValue()Ljava/lang/Double;
|
||||||
|
K2
|
||||||
|
---
|
||||||
|
K1
|
||||||
|
---
|
||||||
|
K2
|
||||||
|
key
|
||||||
|
K1
|
||||||
|
---
|
||||||
|
K2
|
||||||
|
value
|
||||||
|
CLASS DIntCollectionBySet.class
|
||||||
|
CLASS METADATA
|
||||||
|
K1
|
||||||
|
getSize()I
|
||||||
|
K2
|
||||||
|
---
|
||||||
|
K1
|
||||||
|
---
|
||||||
|
K2
|
||||||
|
size
|
||||||
|
CLASS DIntCollectionByList.class
|
||||||
|
CLASS METADATA
|
||||||
|
K1
|
||||||
|
getSize()I
|
||||||
|
K2
|
||||||
|
---
|
||||||
|
K1
|
||||||
|
---
|
||||||
|
K2
|
||||||
|
size
|
||||||
+1
-2
@@ -1,5 +1,4 @@
|
|||||||
// IGNORE_BACKEND_K2: JVM_IR
|
// JVM_ABI_K1_K2_DIFF: KT-65323
|
||||||
// FIR status: KT-57268 K2: extra methods `remove` and/or `getOrDefault` are generated for Map subclasses with JDK 1.6 in dependencies
|
|
||||||
|
|
||||||
class DIntIterator(d: Iterator<Int>) : Iterator<Int> by d
|
class DIntIterator(d: Iterator<Int>) : Iterator<Int> by d
|
||||||
|
|
||||||
|
|||||||
+1
-3
@@ -1,9 +1,7 @@
|
|||||||
// WITH_STDLIB
|
// WITH_STDLIB
|
||||||
|
|
||||||
// IGNORE_BACKEND_K2: JVM_IR
|
// IGNORE_BACKEND_K2: JVM_IR
|
||||||
// FIR status:
|
// FIR status: KT-57300 K2: subclass of MutableCollection with primitive element type has methods with boxed type
|
||||||
// 1) KT-57268 K2: extra methods `remove` and/or `getOrDefault` are generated for Map subclasses with JDK 1.6 in dependencies
|
|
||||||
// 2) KT-57300 K2: subclass of MutableCollection with primitive element type has methods with boxed type
|
|
||||||
// (`containsValue(Ljava/lang/Double;)Z` instead of `containsValue(D)Z`)
|
// (`containsValue(Ljava/lang/Double;)Z` instead of `containsValue(D)Z`)
|
||||||
|
|
||||||
abstract class AMapSD : AbstractMap<String, Double>()
|
abstract class AMapSD : AbstractMap<String, Double>()
|
||||||
|
|||||||
Vendored
+9
@@ -0,0 +1,9 @@
|
|||||||
|
MODULE main
|
||||||
|
CLASS MyMap.class
|
||||||
|
CLASS METADATA
|
||||||
|
PROPERTY getValues()Ljava/util/ArrayList;
|
||||||
|
Property: class.metadata.property.returnType
|
||||||
|
K1
|
||||||
|
java/util/ArrayList<T#1> /* = kotlin/collections/ArrayList^<T#1> */
|
||||||
|
K2
|
||||||
|
java/util/ArrayList<T#1>
|
||||||
+2
-3
@@ -1,9 +1,8 @@
|
|||||||
|
// JVM_ABI_K1_K2_DIFF: KT-63864
|
||||||
|
|
||||||
// Ensure the proper collection stubs are added, in
|
// Ensure the proper collection stubs are added, in
|
||||||
// particular *not* when specialized implementations are provided.
|
// particular *not* when specialized implementations are provided.
|
||||||
|
|
||||||
// IGNORE_BACKEND_K2: JVM_IR
|
|
||||||
// FIR status: KT-57268 K2: extra methods `remove` and/or `getOrDefault` are generated for Map subclasses with JDK 1.6 in dependencies
|
|
||||||
|
|
||||||
class MyMap<K, V> : Map<K, V> {
|
class MyMap<K, V> : Map<K, V> {
|
||||||
|
|
||||||
class MySet<E> : Set<E> {
|
class MySet<E> : Set<E> {
|
||||||
|
|||||||
-3
@@ -1,8 +1,5 @@
|
|||||||
// See KT-42033
|
// See KT-42033
|
||||||
|
|
||||||
// IGNORE_BACKEND_K2: JVM_IR
|
|
||||||
// FIR status: KT-57268 K2: extra methods `remove` and/or `getOrDefault` are generated for Map subclasses with JDK 1.6 in dependencies
|
|
||||||
|
|
||||||
interface ObservableMap<K, V> : Map<K, V>
|
interface ObservableMap<K, V> : Map<K, V>
|
||||||
|
|
||||||
abstract class ObservableMutableMap<K, V> : ObservableMap<K, V> {
|
abstract class ObservableMutableMap<K, V> : ObservableMap<K, V> {
|
||||||
|
|||||||
-4
@@ -1,9 +1,5 @@
|
|||||||
// IGNORE_ANNOTATIONS
|
// IGNORE_ANNOTATIONS
|
||||||
|
|
||||||
// IGNORE_BACKEND_K2: JVM_IR
|
|
||||||
// FIR status: KT-57268 K2: extra methods `remove` and/or `getOrDefault` are generated for Map subclasses with JDK 1.6 in dependencies
|
|
||||||
// (in this case, it's `getOrDefault-impl` because of inline class mangling, and then `remove` is unmangled for some reason)
|
|
||||||
|
|
||||||
inline class InlineMap<K, V>(private val map: Map<K, V>) : Map<K, V> {
|
inline class InlineMap<K, V>(private val map: Map<K, V>) : Map<K, V> {
|
||||||
override val entries: Set<Map.Entry<K, V>> get() = map.entries
|
override val entries: Set<Map.Entry<K, V>> get() = map.entries
|
||||||
override val keys: Set<K> get() = map.keys
|
override val keys: Set<K> get() = map.keys
|
||||||
|
|||||||
-4
@@ -1,9 +1,5 @@
|
|||||||
// IGNORE_ANNOTATIONS
|
// IGNORE_ANNOTATIONS
|
||||||
|
|
||||||
// IGNORE_BACKEND_K2: JVM_IR
|
|
||||||
// FIR status: KT-57268 K2: extra methods `remove` and/or `getOrDefault` are generated for Map subclasses with JDK 1.6 in dependencies
|
|
||||||
// (in this case, it's `remove-impl`/`getOrDefault-impl` because of inline class mangling)
|
|
||||||
|
|
||||||
inline class InlineMutableMap<K, V>(private val mmap: MutableMap<K, V>) : MutableMap<K, V> {
|
inline class InlineMutableMap<K, V>(private val mmap: MutableMap<K, V>) : MutableMap<K, V> {
|
||||||
override val size: Int get() = mmap.size
|
override val size: Int get() = mmap.size
|
||||||
override fun containsKey(key: K): Boolean = mmap.containsKey(key)
|
override fun containsKey(key: K): Boolean = mmap.containsKey(key)
|
||||||
|
|||||||
Vendored
-4
@@ -1,9 +1,5 @@
|
|||||||
// IGNORE_ANNOTATIONS
|
// IGNORE_ANNOTATIONS
|
||||||
|
|
||||||
// IGNORE_BACKEND_K2: JVM_IR
|
|
||||||
// FIR status: KT-57268 K2: extra methods `remove` and/or `getOrDefault` are generated for Map subclasses with JDK 1.6 in dependencies
|
|
||||||
// (in this case, it's `getOrDefault-h8vw2VU` because of inline class mangling, and then `remove` is unmangled for some reason)
|
|
||||||
|
|
||||||
inline class IK(val x: Int)
|
inline class IK(val x: Int)
|
||||||
inline class IV(val x: Double)
|
inline class IV(val x: Double)
|
||||||
|
|
||||||
|
|||||||
Vendored
-4
@@ -1,9 +1,5 @@
|
|||||||
// IGNORE_ANNOTATIONS
|
// IGNORE_ANNOTATIONS
|
||||||
|
|
||||||
// IGNORE_BACKEND_K2: JVM_IR
|
|
||||||
// FIR status: KT-57268 K2: extra methods `remove` and/or `getOrDefault` are generated for Map subclasses with JDK 1.6 in dependencies
|
|
||||||
// (in this case, it's `remove-YEowaJk`/`getOrDefault-h8vw2VU` because of inline class mangling)
|
|
||||||
|
|
||||||
inline class IK(val x: Int)
|
inline class IK(val x: Int)
|
||||||
inline class IV(val x: Double)
|
inline class IV(val x: Double)
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
// WITH_STDLIB
|
// WITH_STDLIB
|
||||||
|
|
||||||
// IGNORE_BACKEND_K2: JVM_IR
|
|
||||||
// FIR status: KT-57268 K2: extra methods `remove` and/or `getOrDefault` are generated for Map subclasses with JDK 1.6 in dependencies
|
|
||||||
|
|
||||||
open class A : HashMap<String, String>()
|
open class A : HashMap<String, String>()
|
||||||
|
|
||||||
class B : A()
|
class B : A()
|
||||||
|
|||||||
-3
@@ -1,8 +1,5 @@
|
|||||||
// WITH_SIGNATURES
|
// WITH_SIGNATURES
|
||||||
|
|
||||||
// IGNORE_BACKEND_K2: JVM_IR
|
|
||||||
// FIR status: KT-57268 K2: extra methods `remove` and/or `getOrDefault` are generated for Map subclasses with JDK 1.6 in dependencies
|
|
||||||
|
|
||||||
interface MapN<K : Number, V> : Map<K, V>
|
interface MapN<K : Number, V> : Map<K, V>
|
||||||
|
|
||||||
abstract class MapImpl<A, B> : Map<A, B> {
|
abstract class MapImpl<A, B> : Map<A, B> {
|
||||||
|
|||||||
+1
-1
@@ -12,4 +12,4 @@ public expect abstract class AbstractMutableMap<K, V> : MutableMap<K, V> {
|
|||||||
|
|
||||||
import java.util.AbstractMap
|
import java.util.AbstractMap
|
||||||
|
|
||||||
public actual abstract class <!NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS!>AbstractMutableMap<!><K, V>() : MutableMap<K, V>, AbstractMap<K, V>()
|
public actual abstract class <!NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS, NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS!>AbstractMutableMap<!><K, V>() : MutableMap<K, V>, AbstractMap<K, V>()
|
||||||
|
|||||||
@@ -85,12 +85,3 @@ FILE fqName:<root> fileName:/internalStdlibOverride.kt
|
|||||||
overridden:
|
overridden:
|
||||||
public open fun <get-values> (): kotlin.collections.Collection<V of kotlin.collections.AbstractMap> declared in kotlin.collections.AbstractMap
|
public open fun <get-values> (): kotlin.collections.Collection<V of kotlin.collections.AbstractMap> declared in kotlin.collections.AbstractMap
|
||||||
$this: VALUE_PARAMETER name:<this> type:kotlin.collections.AbstractMap<kotlin.Int, kotlin.Int>
|
$this: VALUE_PARAMETER name:<this> type:kotlin.collections.AbstractMap<kotlin.Int, kotlin.Int>
|
||||||
FUN FAKE_OVERRIDE name:getOrDefault visibility:public modality:OPEN <> ($this:kotlin.collections.Map<kotlin.Int, kotlin.Int>, key:kotlin.Int, defaultValue:kotlin.Int) returnType:kotlin.Int [fake_override]
|
|
||||||
annotations:
|
|
||||||
SinceKotlin(version = "1.1")
|
|
||||||
PlatformDependent
|
|
||||||
overridden:
|
|
||||||
public open fun getOrDefault (key: K of kotlin.collections.AbstractMap, defaultValue: V of kotlin.collections.AbstractMap): V of kotlin.collections.AbstractMap declared in kotlin.collections.AbstractMap
|
|
||||||
$this: VALUE_PARAMETER name:<this> type:kotlin.collections.Map<kotlin.Int, kotlin.Int>
|
|
||||||
VALUE_PARAMETER name:key index:0 type:kotlin.Int
|
|
||||||
VALUE_PARAMETER name:defaultValue index:1 type:kotlin.Int
|
|
||||||
|
|||||||
@@ -113,15 +113,6 @@ FILE fqName:<root> fileName:/kt43342.kt
|
|||||||
CALL 'public abstract fun <get-values> (): kotlin.collections.Collection<V of kotlin.collections.Map> declared in kotlin.collections.Map' type=kotlin.collections.Collection<V of <root>.ControlFlowInfo> origin=null
|
CALL 'public abstract fun <get-values> (): kotlin.collections.Collection<V of kotlin.collections.Map> declared in kotlin.collections.Map' type=kotlin.collections.Collection<V of <root>.ControlFlowInfo> origin=null
|
||||||
$this: GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:map type:kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> visibility:private [final]' type=kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> origin=null
|
$this: GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:map type:kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> visibility:private [final]' type=kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> origin=null
|
||||||
receiver: GET_VAR '<this>: <root>.ControlFlowInfo<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> declared in <root>.ControlFlowInfo.<get-values>' type=<root>.ControlFlowInfo<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> origin=null
|
receiver: GET_VAR '<this>: <root>.ControlFlowInfo<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> declared in <root>.ControlFlowInfo.<get-values>' type=<root>.ControlFlowInfo<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> origin=null
|
||||||
FUN FAKE_OVERRIDE name:getOrDefault visibility:public modality:OPEN <> ($this:kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo>, key:K of <root>.ControlFlowInfo, defaultValue:V of <root>.ControlFlowInfo) returnType:V of <root>.ControlFlowInfo [fake_override]
|
|
||||||
annotations:
|
|
||||||
SinceKotlin(version = "1.1")
|
|
||||||
PlatformDependent
|
|
||||||
overridden:
|
|
||||||
public open fun getOrDefault (key: K of kotlin.collections.Map, defaultValue: V of kotlin.collections.Map): V of kotlin.collections.Map declared in kotlin.collections.Map
|
|
||||||
$this: VALUE_PARAMETER name:<this> type:kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo>
|
|
||||||
VALUE_PARAMETER name:key index:0 type:K of <root>.ControlFlowInfo
|
|
||||||
VALUE_PARAMETER name:defaultValue index:1 type:V of <root>.ControlFlowInfo
|
|
||||||
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
|
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
|
||||||
overridden:
|
overridden:
|
||||||
public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.collections.Map
|
public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.collections.Map
|
||||||
@@ -178,15 +169,6 @@ FILE fqName:<root> fileName:/kt43342.kt
|
|||||||
public open fun get (key: K of <root>.ControlFlowInfo): V of <root>.ControlFlowInfo? declared in <root>.ControlFlowInfo
|
public open fun get (key: K of <root>.ControlFlowInfo): V of <root>.ControlFlowInfo? declared in <root>.ControlFlowInfo
|
||||||
$this: VALUE_PARAMETER name:<this> type:<root>.ControlFlowInfo<kotlin.String, kotlin.String>
|
$this: VALUE_PARAMETER name:<this> type:<root>.ControlFlowInfo<kotlin.String, kotlin.String>
|
||||||
VALUE_PARAMETER name:key index:0 type:kotlin.String
|
VALUE_PARAMETER name:key index:0 type:kotlin.String
|
||||||
FUN FAKE_OVERRIDE name:getOrDefault visibility:public modality:OPEN <> ($this:kotlin.collections.Map<kotlin.String, kotlin.String>, key:kotlin.String, defaultValue:kotlin.String) returnType:kotlin.String [fake_override]
|
|
||||||
annotations:
|
|
||||||
SinceKotlin(version = "1.1")
|
|
||||||
PlatformDependent
|
|
||||||
overridden:
|
|
||||||
public open fun getOrDefault (key: K of <root>.ControlFlowInfo, defaultValue: V of <root>.ControlFlowInfo): V of <root>.ControlFlowInfo declared in <root>.ControlFlowInfo
|
|
||||||
$this: VALUE_PARAMETER name:<this> type:kotlin.collections.Map<kotlin.String, kotlin.String>
|
|
||||||
VALUE_PARAMETER name:key index:0 type:kotlin.String
|
|
||||||
VALUE_PARAMETER name:defaultValue index:1 type:kotlin.String
|
|
||||||
FUN FAKE_OVERRIDE name:isEmpty visibility:public modality:OPEN <> ($this:<root>.ControlFlowInfo<kotlin.String, kotlin.String>) returnType:kotlin.Boolean [fake_override]
|
FUN FAKE_OVERRIDE name:isEmpty visibility:public modality:OPEN <> ($this:<root>.ControlFlowInfo<kotlin.String, kotlin.String>) returnType:kotlin.Boolean [fake_override]
|
||||||
overridden:
|
overridden:
|
||||||
public open fun isEmpty (): kotlin.Boolean declared in <root>.ControlFlowInfo
|
public open fun isEmpty (): kotlin.Boolean declared in <root>.ControlFlowInfo
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
// IGNORE_BACKEND_K1: JS_IR, JS_IR_ES6
|
// IGNORE_BACKEND_K1: JS_IR, JS_IR_ES6
|
||||||
// ^ Map has js specific methods
|
// ^ Map has js specific methods
|
||||||
// IGNORE_BACKEND_K2: JS_IR
|
// IGNORE_BACKEND_K2: JS_IR
|
||||||
// IGNORE_BACKEND_K2: NATIVE
|
|
||||||
|
|
||||||
open class ControlFlowInfo<K, V>(val map: Map<K, V>): Map<K, V> by map
|
open class ControlFlowInfo<K, V>(val map: Map<K, V>): Map<K, V> by map
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user