JVM_IR fix 'remove' in inline class implementing MutableCollection
This commit is contained in:
Generated
+10
@@ -5033,6 +5033,11 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT
|
|||||||
runTest("compiler/testData/codegen/box/collections/irrelevantSizeOverrideInJava.kt");
|
runTest("compiler/testData/codegen/box/collections/irrelevantSizeOverrideInJava.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("javaCollectionWithRemovePrimitiveInt.kt")
|
||||||
|
public void testJavaCollectionWithRemovePrimitiveInt() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/collections/javaCollectionWithRemovePrimitiveInt.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("kt41123.kt")
|
@TestMetadata("kt41123.kt")
|
||||||
public void testKt41123() throws Exception {
|
public void testKt41123() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/collections/kt41123.kt");
|
runTest("compiler/testData/codegen/box/collections/kt41123.kt");
|
||||||
@@ -14042,6 +14047,11 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT
|
|||||||
runTest("compiler/testData/codegen/box/inlineClasses/referToUnderlyingPropertyOfInlineClass.kt");
|
runTest("compiler/testData/codegen/box/inlineClasses/referToUnderlyingPropertyOfInlineClass.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("removeInInlineCollectionOfInlineClassAsInt.kt")
|
||||||
|
public void testRemoveInInlineCollectionOfInlineClassAsInt() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/removeInInlineCollectionOfInlineClassAsInt.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("resultInlining.kt")
|
@TestMetadata("resultInlining.kt")
|
||||||
public void testResultInlining() throws Exception {
|
public void testResultInlining() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/inlineClasses/resultInlining.kt");
|
runTest("compiler/testData/codegen/box/inlineClasses/resultInlining.kt");
|
||||||
|
|||||||
+15
-5
@@ -11,10 +11,8 @@ import org.jetbrains.kotlin.backend.common.ir.isTopLevel
|
|||||||
import org.jetbrains.kotlin.backend.common.lower.parentsWithSelf
|
import org.jetbrains.kotlin.backend.common.lower.parentsWithSelf
|
||||||
import org.jetbrains.kotlin.backend.jvm.JvmBackendContext
|
import org.jetbrains.kotlin.backend.jvm.JvmBackendContext
|
||||||
import org.jetbrains.kotlin.backend.jvm.JvmLoweredDeclarationOrigin
|
import org.jetbrains.kotlin.backend.jvm.JvmLoweredDeclarationOrigin
|
||||||
import org.jetbrains.kotlin.backend.jvm.ir.getJvmNameFromAnnotation
|
import org.jetbrains.kotlin.backend.jvm.ir.*
|
||||||
import org.jetbrains.kotlin.backend.jvm.ir.isCompiledToJvmDefault
|
import org.jetbrains.kotlin.backend.jvm.lower.inlineclasses.unboxInlineClass
|
||||||
import org.jetbrains.kotlin.backend.jvm.ir.isStaticInlineClassReplacement
|
|
||||||
import org.jetbrains.kotlin.backend.jvm.ir.propertyIfAccessor
|
|
||||||
import org.jetbrains.kotlin.backend.jvm.lower.suspendFunctionOriginal
|
import org.jetbrains.kotlin.backend.jvm.lower.suspendFunctionOriginal
|
||||||
import org.jetbrains.kotlin.builtins.StandardNames
|
import org.jetbrains.kotlin.builtins.StandardNames
|
||||||
import org.jetbrains.kotlin.builtins.jvm.JavaToKotlinClassMap
|
import org.jetbrains.kotlin.builtins.jvm.JavaToKotlinClassMap
|
||||||
@@ -246,7 +244,7 @@ class MethodSignatureMapper(private val context: JvmBackendContext) {
|
|||||||
else -> JvmMethodParameterKind.VALUE
|
else -> JvmMethodParameterKind.VALUE
|
||||||
}
|
}
|
||||||
val type =
|
val type =
|
||||||
if (function.name.asString() == "remove" && forceSingleValueParameterBoxing(function.toIrBasedDescriptor()))
|
if (shouldBoxSingleValueParameterForSpecialCaseOfRemove(function))
|
||||||
parameter.type.makeNullable()
|
parameter.type.makeNullable()
|
||||||
else parameter.type
|
else parameter.type
|
||||||
writeParameter(sw, kind, type, function)
|
writeParameter(sw, kind, type, function)
|
||||||
@@ -274,6 +272,18 @@ class MethodSignatureMapper(private val context: JvmBackendContext) {
|
|||||||
return signature
|
return signature
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Boxing is only necessary for 'remove(E): Boolean' of a MutableCollection<Int> implementation.
|
||||||
|
// Otherwise this method might clash with 'remove(I): E' defined in the java.util.List JDK interface (mapped to kotlin 'removeAt').
|
||||||
|
internal fun shouldBoxSingleValueParameterForSpecialCaseOfRemove(irFunction: IrFunction): Boolean {
|
||||||
|
if (irFunction !is IrSimpleFunction) return false
|
||||||
|
if (irFunction.name.asString() != "remove" && !irFunction.name.asString().startsWith("remove-")) return false
|
||||||
|
if (irFunction.isFromJava()) return false
|
||||||
|
if (irFunction.valueParameters.size != 1) return false
|
||||||
|
val valueParameterType = irFunction.valueParameters[0].type
|
||||||
|
if (!valueParameterType.unboxInlineClass().isInt()) return false
|
||||||
|
return irFunction.allOverridden(false).any { it.parent.kotlinFqName == StandardNames.FqNames.mutableCollection }
|
||||||
|
}
|
||||||
|
|
||||||
private fun writeParameter(sw: JvmSignatureWriter, kind: JvmMethodParameterKind, type: IrType, function: IrFunction) {
|
private fun writeParameter(sw: JvmSignatureWriter, kind: JvmMethodParameterKind, type: IrType, function: IrFunction) {
|
||||||
sw.writeParameterType(kind)
|
sw.writeParameterType(kind)
|
||||||
writeParameterType(sw, type, function)
|
writeParameterType(sw, type, function)
|
||||||
|
|||||||
@@ -344,3 +344,7 @@ fun IrProperty.needsAccessor(accessor: IrSimpleFunction): Boolean = when {
|
|||||||
val IrDeclaration.isStaticInlineClassReplacement: Boolean
|
val IrDeclaration.isStaticInlineClassReplacement: Boolean
|
||||||
get() = origin == JvmLoweredDeclarationOrigin.STATIC_INLINE_CLASS_REPLACEMENT
|
get() = origin == JvmLoweredDeclarationOrigin.STATIC_INLINE_CLASS_REPLACEMENT
|
||||||
|| origin == JvmLoweredDeclarationOrigin.STATIC_INLINE_CLASS_CONSTRUCTOR
|
|| origin == JvmLoweredDeclarationOrigin.STATIC_INLINE_CLASS_CONSTRUCTOR
|
||||||
|
|
||||||
|
fun IrDeclaration.isFromJava(): Boolean =
|
||||||
|
origin == IrDeclarationOrigin.IR_EXTERNAL_JAVA_DECLARATION_STUB ||
|
||||||
|
parent is IrDeclaration && (parent as IrDeclaration).isFromJava()
|
||||||
+28
-7
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.backend.jvm.JvmLoweredDeclarationOrigin
|
|||||||
import org.jetbrains.kotlin.backend.jvm.codegen.isJvmInterface
|
import org.jetbrains.kotlin.backend.jvm.codegen.isJvmInterface
|
||||||
import org.jetbrains.kotlin.backend.jvm.ir.copyCorrespondingPropertyFrom
|
import org.jetbrains.kotlin.backend.jvm.ir.copyCorrespondingPropertyFrom
|
||||||
import org.jetbrains.kotlin.backend.jvm.ir.eraseTypeParameters
|
import org.jetbrains.kotlin.backend.jvm.ir.eraseTypeParameters
|
||||||
|
import org.jetbrains.kotlin.backend.jvm.ir.isFromJava
|
||||||
import org.jetbrains.kotlin.backend.jvm.ir.isJvmAbstract
|
import org.jetbrains.kotlin.backend.jvm.ir.isJvmAbstract
|
||||||
import org.jetbrains.kotlin.backend.jvm.lower.inlineclasses.unboxInlineClass
|
import org.jetbrains.kotlin.backend.jvm.lower.inlineclasses.unboxInlineClass
|
||||||
import org.jetbrains.kotlin.codegen.AsmUtil
|
import org.jetbrains.kotlin.codegen.AsmUtil
|
||||||
@@ -118,7 +119,8 @@ import org.jetbrains.org.objectweb.asm.commons.Method
|
|||||||
internal val bridgePhase = makeIrFilePhase(
|
internal val bridgePhase = makeIrFilePhase(
|
||||||
::BridgeLowering,
|
::BridgeLowering,
|
||||||
name = "Bridge",
|
name = "Bridge",
|
||||||
description = "Generate bridges"
|
description = "Generate bridges",
|
||||||
|
prerequisite = setOf(jvmInlineClassPhase)
|
||||||
)
|
)
|
||||||
|
|
||||||
internal class BridgeLowering(val context: JvmBackendContext) : FileLoweringPass, IrElementTransformerVoid() {
|
internal class BridgeLowering(val context: JvmBackendContext) : FileLoweringPass, IrElementTransformerVoid() {
|
||||||
@@ -196,6 +198,24 @@ internal class BridgeLowering(val context: JvmBackendContext) : FileLoweringPass
|
|||||||
return !irFunction.isFakeOverride || irFunction.resolvesToClass()
|
return !irFunction.isFakeOverride || irFunction.resolvesToClass()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
if (declaration.isInline) {
|
||||||
|
// Inline class (implementing 'MutableCollection<T>', where T is Int or an inline class mapped to Int)
|
||||||
|
// can contain a static replacement for a function 'remove', which forces value parameter boxing
|
||||||
|
// in order to avoid signature clash with 'remove(int)' method in 'java.util.List'.
|
||||||
|
// We should rewrite this static replacement as well ('remove' function itself is handled during special bridge processing).
|
||||||
|
for (irFunction in declaration.functions) {
|
||||||
|
val originalFunction = context.inlineClassReplacements.originalFunctionForStaticReplacement[irFunction]
|
||||||
|
?: continue
|
||||||
|
if (context.methodSignatureMapper.shouldBoxSingleValueParameterForSpecialCaseOfRemove(originalFunction)) {
|
||||||
|
val oldValueParameter1 = irFunction.valueParameters[1]
|
||||||
|
val newValueParameter1 = oldValueParameter1.copyTo(irFunction, type = oldValueParameter1.type.makeNullable())
|
||||||
|
irFunction.valueParameters = listOf(irFunction.valueParameters[0], newValueParameter1)
|
||||||
|
irFunction.body?.transform(VariableRemapper(mapOf(oldValueParameter1 to newValueParameter1)), null)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return super.visitClass(declaration)
|
return super.visitClass(declaration)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -351,7 +371,7 @@ internal class BridgeLowering(val context: JvmBackendContext) : FileLoweringPass
|
|||||||
//
|
//
|
||||||
// This matches the behavior of the JVM backend, but it's probably a bad idea since this is an
|
// This matches the behavior of the JVM backend, but it's probably a bad idea since this is an
|
||||||
// opportunity for a Java and Kotlin implementation of the same interface to go out of sync.
|
// opportunity for a Java and Kotlin implementation of the same interface to go out of sync.
|
||||||
if (it.parentAsClass.isInterface || it.comesFromJava())
|
if (it.parentAsClass.isInterface || it.isFromJava())
|
||||||
null
|
null
|
||||||
else
|
else
|
||||||
it.specialBridgeOrNull?.signature?.takeIf { bridgeSignature -> bridgeSignature != it.jvmMethod }
|
it.specialBridgeOrNull?.signature?.takeIf { bridgeSignature -> bridgeSignature != it.jvmMethod }
|
||||||
@@ -361,7 +381,7 @@ internal class BridgeLowering(val context: JvmBackendContext) : FileLoweringPass
|
|||||||
private fun IrSimpleFunction.overriddenSpecialBridges(): List<SpecialBridge> {
|
private fun IrSimpleFunction.overriddenSpecialBridges(): List<SpecialBridge> {
|
||||||
val targetJvmMethod = context.methodSignatureMapper.mapCalleeToAsmMethod(this)
|
val targetJvmMethod = context.methodSignatureMapper.mapCalleeToAsmMethod(this)
|
||||||
return allOverridden()
|
return allOverridden()
|
||||||
.filter { it.parentAsClass.isInterface || it.comesFromJava() }
|
.filter { it.parentAsClass.isInterface || it.isFromJava() }
|
||||||
.mapNotNull { it.specialBridgeOrNull }
|
.mapNotNull { it.specialBridgeOrNull }
|
||||||
.filter { it.signature != targetJvmMethod }
|
.filter { it.signature != targetJvmMethod }
|
||||||
.map { it.copy(isFinal = false, isSynthetic = true, methodInfo = null) }
|
.map { it.copy(isFinal = false, isSynthetic = true, methodInfo = null) }
|
||||||
@@ -568,8 +588,11 @@ internal class BridgeLowering(val context: JvmBackendContext) : FileLoweringPass
|
|||||||
if (correspondingProperty != null) {
|
if (correspondingProperty != null) {
|
||||||
if (correspondingProperty.owner.name !in specialBridgeMethods.specialPropertyNames) return null
|
if (correspondingProperty.owner.name !in specialBridgeMethods.specialPropertyNames) return null
|
||||||
} else {
|
} else {
|
||||||
// 'removeAt' function can be mangled by inline class rules
|
// 'remove' and 'removeAt' functions can be mangled by inline class rules
|
||||||
if (function.name !in specialBridgeMethods.specialMethodNames && !function.name.asString().startsWith("removeAt-")) {
|
if (function.name !in specialBridgeMethods.specialMethodNames &&
|
||||||
|
!function.name.asString().startsWith("removeAt-") &&
|
||||||
|
!function.name.asString().startsWith("remove-")
|
||||||
|
) {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -622,8 +645,6 @@ internal class BridgeLowering(val context: JvmBackendContext) : FileLoweringPass
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun IrDeclaration.comesFromJava() = parentAsClass.origin == IrDeclarationOrigin.IR_EXTERNAL_JAVA_DECLARATION_STUB
|
|
||||||
|
|
||||||
// Check whether a fake override will resolve to an implementation in class, not an interface.
|
// Check whether a fake override will resolve to an implementation in class, not an interface.
|
||||||
private fun IrSimpleFunction.resolvesToClass(): Boolean {
|
private fun IrSimpleFunction.resolvesToClass(): Boolean {
|
||||||
val overriddenFromClass = overriddenFromClass() ?: return false
|
val overriddenFromClass = overriddenFromClass() ?: return false
|
||||||
|
|||||||
+2
-3
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.backend.common.lower.createIrBuilder
|
|||||||
import org.jetbrains.kotlin.backend.common.phaser.makeIrFilePhase
|
import org.jetbrains.kotlin.backend.common.phaser.makeIrFilePhase
|
||||||
import org.jetbrains.kotlin.backend.jvm.JvmBackendContext
|
import org.jetbrains.kotlin.backend.jvm.JvmBackendContext
|
||||||
import org.jetbrains.kotlin.backend.jvm.codegen.isJvmInterface
|
import org.jetbrains.kotlin.backend.jvm.codegen.isJvmInterface
|
||||||
|
import org.jetbrains.kotlin.backend.jvm.ir.isFromJava
|
||||||
import org.jetbrains.kotlin.descriptors.Modality
|
import org.jetbrains.kotlin.descriptors.Modality
|
||||||
import org.jetbrains.kotlin.ir.builders.declarations.buildFun
|
import org.jetbrains.kotlin.ir.builders.declarations.buildFun
|
||||||
import org.jetbrains.kotlin.ir.builders.declarations.buildValueParameter
|
import org.jetbrains.kotlin.ir.builders.declarations.buildValueParameter
|
||||||
@@ -420,12 +421,10 @@ internal class CollectionStubComputer(val context: JvmBackendContext) {
|
|||||||
|
|
||||||
fun stubsForCollectionClasses(irClass: IrClass): Collection<StubsForCollectionClass> =
|
fun stubsForCollectionClasses(irClass: IrClass): Collection<StubsForCollectionClass> =
|
||||||
stubsCache.getOrPut(irClass) {
|
stubsCache.getOrPut(irClass) {
|
||||||
if (irClass.comesFromJava()) emptySet()
|
if (irClass.isFromJava()) emptySet()
|
||||||
else preComputedStubs.filter { (readOnlyClass, mutableClass) ->
|
else preComputedStubs.filter { (readOnlyClass, mutableClass) ->
|
||||||
!irClass.symbol.isSubtypeOfClass(mutableClass) &&
|
!irClass.symbol.isSubtypeOfClass(mutableClass) &&
|
||||||
irClass.superTypes.any { it.isSubtypeOfClass(readOnlyClass) }
|
irClass.superTypes.any { it.isSubtypeOfClass(readOnlyClass) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun IrClass.comesFromJava() = origin == IrDeclarationOrigin.IR_EXTERNAL_JAVA_DECLARATION_STUB
|
|
||||||
}
|
}
|
||||||
+4
@@ -37,6 +37,8 @@ class MemoizedInlineClassReplacements(private val mangleReturnTypes: Boolean, pr
|
|||||||
private val storageManager = LockBasedStorageManager("inline-class-replacements")
|
private val storageManager = LockBasedStorageManager("inline-class-replacements")
|
||||||
private val propertyMap = mutableMapOf<IrPropertySymbol, IrProperty>()
|
private val propertyMap = mutableMapOf<IrPropertySymbol, IrProperty>()
|
||||||
|
|
||||||
|
internal val originalFunctionForStaticReplacement: MutableMap<IrFunction, IrFunction> = HashMap()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a replacement for a function or a constructor.
|
* Get a replacement for a function or a constructor.
|
||||||
*/
|
*/
|
||||||
@@ -166,6 +168,8 @@ class MemoizedInlineClassReplacements(private val mangleReturnTypes: Boolean, pr
|
|||||||
|
|
||||||
private fun createStaticReplacement(function: IrFunction): IrSimpleFunction =
|
private fun createStaticReplacement(function: IrFunction): IrSimpleFunction =
|
||||||
buildReplacement(function, JvmLoweredDeclarationOrigin.STATIC_INLINE_CLASS_REPLACEMENT, noFakeOverride = true) {
|
buildReplacement(function, JvmLoweredDeclarationOrigin.STATIC_INLINE_CLASS_REPLACEMENT, noFakeOverride = true) {
|
||||||
|
originalFunctionForStaticReplacement[this] = function
|
||||||
|
|
||||||
val newValueParameters = mutableListOf<IrValueParameter>()
|
val newValueParameters = mutableListOf<IrValueParameter>()
|
||||||
if (function.dispatchReceiverParameter != null) {
|
if (function.dispatchReceiverParameter != null) {
|
||||||
// FAKE_OVERRIDEs have broken dispatch receivers
|
// FAKE_OVERRIDEs have broken dispatch receivers
|
||||||
|
|||||||
+99
@@ -0,0 +1,99 @@
|
|||||||
|
// TARGET_BACKEND: JVM
|
||||||
|
// WITH_RUNTIME
|
||||||
|
// FILE: javaCollectionWithRemovePrimitiveInt.kt
|
||||||
|
|
||||||
|
fun box(): String {
|
||||||
|
val j = JIntCollection(arrayListOf(1, 2, 3))
|
||||||
|
j.remove(1) // remove(int)
|
||||||
|
if (j.removed != 1) throw AssertionError("${j.removed}")
|
||||||
|
return "OK"
|
||||||
|
}
|
||||||
|
|
||||||
|
// FILE: JIntCollection.java
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
public class JIntCollection implements Collection<Integer> {
|
||||||
|
private final Collection<Integer> collection;
|
||||||
|
public int removed = 0;
|
||||||
|
|
||||||
|
public JIntCollection(Collection<Integer> collection) {
|
||||||
|
this.collection = collection;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int size() {
|
||||||
|
return collection.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isEmpty() {
|
||||||
|
return collection.isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean contains(Object o) {
|
||||||
|
return collection.contains(o);
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
@Override
|
||||||
|
public Iterator<Integer> iterator() {
|
||||||
|
return collection.iterator();
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
@Override
|
||||||
|
public Object[] toArray() {
|
||||||
|
return collection.toArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
@Override
|
||||||
|
public <T> T[] toArray(@NotNull T[] a) {
|
||||||
|
return collection.toArray(a);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean add(Integer integer) {
|
||||||
|
return collection.add(integer);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean remove(Object o) {
|
||||||
|
return collection.remove(o);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean remove(int x) {
|
||||||
|
removed = x;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean containsAll(@NotNull Collection<?> c) {
|
||||||
|
return collection.containsAll(c);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean addAll(@NotNull Collection<? extends Integer> c) {
|
||||||
|
return collection.addAll(c);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean removeAll(@NotNull Collection<?> c) {
|
||||||
|
return collection.removeAll(c);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean retainAll(@NotNull Collection<?> c) {
|
||||||
|
return collection.retainAll(c);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void clear() {
|
||||||
|
collection.clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
+48
@@ -0,0 +1,48 @@
|
|||||||
|
// WITH_RUNTIME
|
||||||
|
// KJS_WITH_FULL_RUNTIME
|
||||||
|
|
||||||
|
inline class Z(val x: Int)
|
||||||
|
|
||||||
|
inline class Z2(val x: Z)
|
||||||
|
|
||||||
|
fun z2(x: Int) = Z2(Z(x))
|
||||||
|
|
||||||
|
inline class ZMutableCollection(private val ms: MutableCollection<Z>) : MutableCollection<Z> {
|
||||||
|
override fun add(element: Z): Boolean = ms.add(element)
|
||||||
|
override fun addAll(elements: Collection<Z>): Boolean = ms.addAll(elements)
|
||||||
|
override fun clear() { ms.clear() }
|
||||||
|
override fun iterator(): MutableIterator<Z> = ms.iterator()
|
||||||
|
override fun remove(element: Z): Boolean = ms.remove(element)
|
||||||
|
override fun removeAll(elements: Collection<Z>): Boolean = ms.removeAll(elements)
|
||||||
|
override fun retainAll(elements: Collection<Z>): Boolean = ms.retainAll(elements)
|
||||||
|
override val size: Int get() = ms.size
|
||||||
|
override fun contains(element: Z): Boolean = ms.contains(element)
|
||||||
|
override fun containsAll(elements: Collection<Z>): Boolean = ms.containsAll(elements)
|
||||||
|
override fun isEmpty(): Boolean = ms.isEmpty()
|
||||||
|
}
|
||||||
|
|
||||||
|
inline class Z2MutableCollection(private val ms: MutableCollection<Z2>) : MutableCollection<Z2> {
|
||||||
|
override fun add(element: Z2): Boolean = ms.add(element)
|
||||||
|
override fun addAll(elements: Collection<Z2>): Boolean = ms.addAll(elements)
|
||||||
|
override fun clear() { ms.clear() }
|
||||||
|
override fun iterator(): MutableIterator<Z2> = ms.iterator()
|
||||||
|
override fun remove(element: Z2): Boolean = ms.remove(element)
|
||||||
|
override fun removeAll(elements: Collection<Z2>): Boolean = ms.removeAll(elements)
|
||||||
|
override fun retainAll(elements: Collection<Z2>): Boolean = ms.retainAll(elements)
|
||||||
|
override val size: Int get() = ms.size
|
||||||
|
override fun contains(element: Z2): Boolean = ms.contains(element)
|
||||||
|
override fun containsAll(elements: Collection<Z2>): Boolean = ms.containsAll(elements)
|
||||||
|
override fun isEmpty(): Boolean = ms.isEmpty()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun box(): String {
|
||||||
|
val zc1 = ZMutableCollection(mutableListOf(Z(1), Z(2), Z(3)))
|
||||||
|
zc1.remove(Z(1))
|
||||||
|
if (Z(1) in zc1) throw AssertionError("Z(1) in zc1")
|
||||||
|
|
||||||
|
val zc2 = Z2MutableCollection(mutableListOf(z2(1), z2(2), z2(3)))
|
||||||
|
zc2.remove(z2(1))
|
||||||
|
if (z2(1) in zc2) throw AssertionError("z2(1) in zc2")
|
||||||
|
|
||||||
|
return "OK"
|
||||||
|
}
|
||||||
-5
@@ -1,11 +1,6 @@
|
|||||||
// 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: JVM_IR
|
|
||||||
// TODO KT-42067 JVM_IR generates extra bridges:
|
|
||||||
// public bridge final method entrySet(): MyMap$MySet
|
|
||||||
// public bridge final method keySet(): MyMap$MySet
|
|
||||||
// public bridge final method values(): java.util.ArrayList
|
|
||||||
class MyMap<K, V> : Map<K, V> {
|
class MyMap<K, V> : Map<K, V> {
|
||||||
|
|
||||||
class MySet<E> : Set<E> {
|
class MySet<E> : Set<E> {
|
||||||
|
|||||||
Vendored
+46
@@ -0,0 +1,46 @@
|
|||||||
|
@kotlin.Metadata
|
||||||
|
public final class MyMap$MySet {
|
||||||
|
// source: 'noStubsForMapImplementations.kt'
|
||||||
|
public method <init>(): void
|
||||||
|
public method add(p0: java.lang.Object): boolean
|
||||||
|
public method addAll(p0: java.util.Collection): boolean
|
||||||
|
public method clear(): void
|
||||||
|
public method contains(p0: java.lang.Object): boolean
|
||||||
|
public method containsAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean
|
||||||
|
public method getSize(): int
|
||||||
|
public method isEmpty(): boolean
|
||||||
|
public @org.jetbrains.annotations.NotNull method iterator(): java.util.Iterator
|
||||||
|
public method remove(p0: java.lang.Object): boolean
|
||||||
|
public method removeAll(p0: java.util.Collection): boolean
|
||||||
|
public method retainAll(p0: java.util.Collection): boolean
|
||||||
|
public bridge final method size(): int
|
||||||
|
public method toArray(): java.lang.Object[]
|
||||||
|
public method toArray(p0: java.lang.Object[]): java.lang.Object[]
|
||||||
|
public final inner class MyMap$MySet
|
||||||
|
}
|
||||||
|
|
||||||
|
@kotlin.Metadata
|
||||||
|
public final class MyMap {
|
||||||
|
// source: 'noStubsForMapImplementations.kt'
|
||||||
|
public method <init>(): void
|
||||||
|
public method clear(): void
|
||||||
|
public method containsKey(p0: java.lang.Object): boolean
|
||||||
|
public method containsValue(p0: java.lang.Object): boolean
|
||||||
|
public bridge final method entrySet(): MyMap$MySet
|
||||||
|
public synthetic bridge method entrySet(): java.util.Set
|
||||||
|
public method get(p0: java.lang.Object): java.lang.Object
|
||||||
|
public @org.jetbrains.annotations.NotNull method getEntries(): MyMap$MySet
|
||||||
|
public @org.jetbrains.annotations.NotNull method getKeys(): MyMap$MySet
|
||||||
|
public method getSize(): int
|
||||||
|
public @org.jetbrains.annotations.NotNull method getValues(): java.util.ArrayList
|
||||||
|
public method isEmpty(): boolean
|
||||||
|
public bridge final method keySet(): MyMap$MySet
|
||||||
|
public synthetic bridge method keySet(): java.util.Set
|
||||||
|
public method put(p0: java.lang.Object, p1: java.lang.Object): java.lang.Object
|
||||||
|
public method putAll(p0: java.util.Map): void
|
||||||
|
public method remove(p0: java.lang.Object): java.lang.Object
|
||||||
|
public bridge final method size(): int
|
||||||
|
public bridge final method values(): java.util.ArrayList
|
||||||
|
public synthetic bridge method values(): java.util.Collection
|
||||||
|
public final inner class MyMap$MySet
|
||||||
|
}
|
||||||
Vendored
+1
@@ -68,6 +68,7 @@ public final class InlineMap {
|
|||||||
public synthetic bridge method put(p0: java.lang.Object, p1: java.lang.Object): java.lang.Object
|
public synthetic bridge method put(p0: java.lang.Object, p1: java.lang.Object): java.lang.Object
|
||||||
public method put-pjrbk2k(p0: int, p1: double): IV
|
public method put-pjrbk2k(p0: int, p1: double): IV
|
||||||
public method putAll(p0: java.util.Map): void
|
public method putAll(p0: java.util.Map): void
|
||||||
|
public bridge final method remove(p0: java.lang.Object): IV
|
||||||
public synthetic bridge method remove(p0: java.lang.Object): java.lang.Object
|
public synthetic bridge method remove(p0: java.lang.Object): java.lang.Object
|
||||||
public method remove-i7hxwoc(p0: java.lang.Object): IV
|
public method remove-i7hxwoc(p0: java.lang.Object): IV
|
||||||
public synthetic bridge method size(): int
|
public synthetic bridge method size(): int
|
||||||
|
|||||||
-2
@@ -1,6 +1,4 @@
|
|||||||
// IGNORE_ANNOTATIONS
|
// IGNORE_ANNOTATIONS
|
||||||
// IGNORE_BACKEND: JVM_IR
|
|
||||||
// ^ TODO: special bridges <-> inline classes interaction
|
|
||||||
|
|
||||||
inline class IT(val x: Int)
|
inline class IT(val x: Int)
|
||||||
|
|
||||||
|
|||||||
+60
@@ -0,0 +1,60 @@
|
|||||||
|
public final class IT {
|
||||||
|
// source: 'mutableCollection.kt'
|
||||||
|
private final field x: int
|
||||||
|
private synthetic method <init>(p0: int): void
|
||||||
|
public synthetic final static method box-impl(p0: int): IT
|
||||||
|
public static method constructor-impl(p0: int): int
|
||||||
|
public method equals(p0: java.lang.Object): boolean
|
||||||
|
public static method equals-impl(p0: int, p1: java.lang.Object): boolean
|
||||||
|
public final static method equals-impl0(p0: int, p1: int): boolean
|
||||||
|
public final method getX(): int
|
||||||
|
public method hashCode(): int
|
||||||
|
public static method hashCode-impl(p0: int): int
|
||||||
|
public method toString(): java.lang.String
|
||||||
|
public static method toString-impl(p0: int): java.lang.String
|
||||||
|
public synthetic final method unbox-impl(): int
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class InlineMutableCollection {
|
||||||
|
// source: 'mutableCollection.kt'
|
||||||
|
private final field mc: java.util.Collection
|
||||||
|
private synthetic method <init>(p0: java.util.Collection): void
|
||||||
|
public synthetic bridge method add(p0: java.lang.Object): boolean
|
||||||
|
public method add-jHY5zpA(p0: int): boolean
|
||||||
|
public static method add-jHY5zpA(p0: java.util.Collection, p1: int): boolean
|
||||||
|
public method addAll(p0: java.util.Collection): boolean
|
||||||
|
public static method addAll-impl(p0: java.util.Collection, p1: java.util.Collection): boolean
|
||||||
|
public synthetic final static method box-impl(p0: java.util.Collection): InlineMutableCollection
|
||||||
|
public method clear(): void
|
||||||
|
public static method clear-impl(p0: java.util.Collection): void
|
||||||
|
public static method constructor-impl(p0: java.util.Collection): java.util.Collection
|
||||||
|
public synthetic bridge method contains(p0: java.lang.Object): boolean
|
||||||
|
public method contains-jHY5zpA(p0: int): boolean
|
||||||
|
public static method contains-jHY5zpA(p0: java.util.Collection, p1: int): boolean
|
||||||
|
public method containsAll(p0: java.util.Collection): boolean
|
||||||
|
public static method containsAll-impl(p0: java.util.Collection, p1: java.util.Collection): boolean
|
||||||
|
public method equals(p0: java.lang.Object): boolean
|
||||||
|
public static method equals-impl(p0: java.util.Collection, p1: java.lang.Object): boolean
|
||||||
|
public final static method equals-impl0(p0: java.util.Collection, p1: java.util.Collection): boolean
|
||||||
|
public method getSize(): int
|
||||||
|
public static method getSize-impl(p0: java.util.Collection): int
|
||||||
|
public method hashCode(): int
|
||||||
|
public static method hashCode-impl(p0: java.util.Collection): int
|
||||||
|
public method isEmpty(): boolean
|
||||||
|
public static method isEmpty-impl(p0: java.util.Collection): boolean
|
||||||
|
public method iterator(): java.util.Iterator
|
||||||
|
public static method iterator-impl(p0: java.util.Collection): java.util.Iterator
|
||||||
|
public bridge final method remove(p0: java.lang.Object): boolean
|
||||||
|
public method remove-jHY5zpA(p0: IT): boolean
|
||||||
|
public static method remove-jHY5zpA(p0: java.util.Collection, p1: IT): boolean
|
||||||
|
public method removeAll(p0: java.util.Collection): boolean
|
||||||
|
public static method removeAll-impl(p0: java.util.Collection, p1: java.util.Collection): boolean
|
||||||
|
public method retainAll(p0: java.util.Collection): boolean
|
||||||
|
public static method retainAll-impl(p0: java.util.Collection, p1: java.util.Collection): boolean
|
||||||
|
public synthetic bridge method size(): int
|
||||||
|
public method toArray(): java.lang.Object[]
|
||||||
|
public method toArray(p0: java.lang.Object[]): java.lang.Object[]
|
||||||
|
public method toString(): java.lang.String
|
||||||
|
public static method toString-impl(p0: java.util.Collection): java.lang.String
|
||||||
|
public synthetic final method unbox-impl(): java.util.Collection
|
||||||
|
}
|
||||||
+1
-1
@@ -64,7 +64,7 @@ public final class InlineMutableList {
|
|||||||
public static method listIterator-impl(p0: java.util.List, p1: int): java.util.ListIterator
|
public static method listIterator-impl(p0: java.util.List, p1: int): java.util.ListIterator
|
||||||
public synthetic bridge method remove(p0: int): java.lang.Object
|
public synthetic bridge method remove(p0: int): java.lang.Object
|
||||||
public bridge final method remove(p0: int): long
|
public bridge final method remove(p0: int): long
|
||||||
public synthetic bridge method remove(p0: java.lang.Object): boolean
|
public bridge final method remove(p0: java.lang.Object): boolean
|
||||||
public static method remove-jHY5zpA(p0: java.util.List, p1: long): boolean
|
public static method remove-jHY5zpA(p0: java.util.List, p1: long): boolean
|
||||||
public method remove-jHY5zpA(p0: long): boolean
|
public method remove-jHY5zpA(p0: long): boolean
|
||||||
public method removeAll(p0: java.util.Collection): boolean
|
public method removeAll(p0: java.util.Collection): boolean
|
||||||
|
|||||||
+1
@@ -71,6 +71,7 @@ public final class InlineMutableMap {
|
|||||||
public static method put-pjrbk2k(p0: java.util.Map, p1: int, p2: double): IV
|
public static method put-pjrbk2k(p0: java.util.Map, p1: int, p2: double): IV
|
||||||
public method putAll(p0: java.util.Map): void
|
public method putAll(p0: java.util.Map): void
|
||||||
public static method putAll-impl(p0: java.util.Map, p1: java.util.Map): void
|
public static method putAll-impl(p0: java.util.Map, p1: java.util.Map): void
|
||||||
|
public bridge final method remove(p0: java.lang.Object): IV
|
||||||
public synthetic bridge method remove(p0: java.lang.Object): java.lang.Object
|
public synthetic bridge method remove(p0: java.lang.Object): java.lang.Object
|
||||||
public method remove-FSIWiWE(p0: int): IV
|
public method remove-FSIWiWE(p0: int): IV
|
||||||
public static method remove-FSIWiWE(p0: java.util.Map, p1: int): IV
|
public static method remove-FSIWiWE(p0: java.util.Map, p1: int): IV
|
||||||
|
|||||||
Vendored
-2
@@ -1,6 +1,4 @@
|
|||||||
// IGNORE_ANNOTATIONS
|
// IGNORE_ANNOTATIONS
|
||||||
// IGNORE_BACKEND: JVM_IR
|
|
||||||
// ^ TODO: special bridges <-> inline classes interaction
|
|
||||||
|
|
||||||
inline class IT(val x: Int)
|
inline class IT(val x: Int)
|
||||||
|
|
||||||
|
|||||||
compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/mutableSet2.kt
Vendored
+19
@@ -0,0 +1,19 @@
|
|||||||
|
// IGNORE_ANNOTATIONS
|
||||||
|
|
||||||
|
inline class IT(val x: Int)
|
||||||
|
|
||||||
|
inline class IT2(val x: IT)
|
||||||
|
|
||||||
|
inline class InlineMutableSet2(private val ms: MutableSet<IT2>) : MutableSet<IT2> {
|
||||||
|
override val size: Int get() = ms.size
|
||||||
|
override fun contains(element: IT2): Boolean = ms.contains(element)
|
||||||
|
override fun containsAll(elements: Collection<IT2>): Boolean = ms.containsAll(elements)
|
||||||
|
override fun isEmpty(): Boolean = ms.isEmpty()
|
||||||
|
override fun add(element: IT2): Boolean = ms.add(element)
|
||||||
|
override fun addAll(elements: Collection<IT2>): Boolean = ms.addAll(elements)
|
||||||
|
override fun clear() { ms.clear() }
|
||||||
|
override fun iterator(): MutableIterator<IT2> = ms.iterator()
|
||||||
|
override fun remove(element: IT2): Boolean = ms.remove(element)
|
||||||
|
override fun removeAll(elements: Collection<IT2>): Boolean = ms.removeAll(elements)
|
||||||
|
override fun retainAll(elements: Collection<IT2>): Boolean = ms.retainAll(elements)
|
||||||
|
}
|
||||||
+77
@@ -0,0 +1,77 @@
|
|||||||
|
public final class IT {
|
||||||
|
// source: 'mutableSet2.kt'
|
||||||
|
private final field x: int
|
||||||
|
private synthetic method <init>(p0: int): void
|
||||||
|
public synthetic final static method box-impl(p0: int): IT
|
||||||
|
public static method constructor-impl(p0: int): int
|
||||||
|
public method equals(p0: java.lang.Object): boolean
|
||||||
|
public static method equals-impl(p0: int, p1: java.lang.Object): boolean
|
||||||
|
public final static method equals-impl0(p0: int, p1: int): boolean
|
||||||
|
public final method getX(): int
|
||||||
|
public method hashCode(): int
|
||||||
|
public static method hashCode-impl(p0: int): int
|
||||||
|
public method toString(): java.lang.String
|
||||||
|
public static method toString-impl(p0: int): java.lang.String
|
||||||
|
public synthetic final method unbox-impl(): int
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class IT2 {
|
||||||
|
// source: 'mutableSet2.kt'
|
||||||
|
private final field x: int
|
||||||
|
private synthetic method <init>(p0: int): void
|
||||||
|
public synthetic final static method box-impl(p0: int): IT2
|
||||||
|
public static method constructor-impl(p0: int): int
|
||||||
|
public method equals(p0: java.lang.Object): boolean
|
||||||
|
public static method equals-impl(p0: int, p1: java.lang.Object): boolean
|
||||||
|
public final static method equals-impl0(p0: int, p1: int): boolean
|
||||||
|
public final method getX-XAcLw3A(): int
|
||||||
|
public method hashCode(): int
|
||||||
|
public static method hashCode-impl(p0: int): int
|
||||||
|
public method toString(): java.lang.String
|
||||||
|
public static method toString-impl(p0: int): java.lang.String
|
||||||
|
public synthetic final method unbox-impl(): int
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class InlineMutableSet2 {
|
||||||
|
// source: 'mutableSet2.kt'
|
||||||
|
private final field ms: java.util.Set
|
||||||
|
private synthetic method <init>(p0: java.util.Set): void
|
||||||
|
public synthetic bridge method add(p0: java.lang.Object): boolean
|
||||||
|
public method add-C2ZI6mw(p0: int): boolean
|
||||||
|
public static method add-C2ZI6mw(p0: java.util.Set, p1: int): boolean
|
||||||
|
public method addAll(p0: java.util.Collection): boolean
|
||||||
|
public static method addAll-impl(p0: java.util.Set, p1: java.util.Collection): boolean
|
||||||
|
public synthetic final static method box-impl(p0: java.util.Set): InlineMutableSet2
|
||||||
|
public method clear(): void
|
||||||
|
public static method clear-impl(p0: java.util.Set): void
|
||||||
|
public static method constructor-impl(p0: java.util.Set): java.util.Set
|
||||||
|
public bridge final method contains(p0: java.lang.Object): boolean
|
||||||
|
public method contains-C2ZI6mw(p0: int): boolean
|
||||||
|
public static method contains-C2ZI6mw(p0: java.util.Set, p1: int): boolean
|
||||||
|
public method containsAll(p0: java.util.Collection): boolean
|
||||||
|
public static method containsAll-impl(p0: java.util.Set, p1: java.util.Collection): boolean
|
||||||
|
public method equals(p0: java.lang.Object): boolean
|
||||||
|
public static method equals-impl(p0: java.util.Set, p1: java.lang.Object): boolean
|
||||||
|
public final static method equals-impl0(p0: java.util.Set, p1: java.util.Set): boolean
|
||||||
|
public method getSize(): int
|
||||||
|
public static method getSize-impl(p0: java.util.Set): int
|
||||||
|
public method hashCode(): int
|
||||||
|
public static method hashCode-impl(p0: java.util.Set): int
|
||||||
|
public method isEmpty(): boolean
|
||||||
|
public static method isEmpty-impl(p0: java.util.Set): boolean
|
||||||
|
public method iterator(): java.util.Iterator
|
||||||
|
public static method iterator-impl(p0: java.util.Set): java.util.Iterator
|
||||||
|
public bridge final method remove(p0: java.lang.Object): boolean
|
||||||
|
public method remove-C2ZI6mw(p0: IT2): boolean
|
||||||
|
public static method remove-C2ZI6mw(p0: java.util.Set, p1: IT2): boolean
|
||||||
|
public method removeAll(p0: java.util.Collection): boolean
|
||||||
|
public static method removeAll-impl(p0: java.util.Set, p1: java.util.Collection): boolean
|
||||||
|
public method retainAll(p0: java.util.Collection): boolean
|
||||||
|
public static method retainAll-impl(p0: java.util.Set, p1: java.util.Collection): boolean
|
||||||
|
public bridge final method size(): int
|
||||||
|
public method toArray(): java.lang.Object[]
|
||||||
|
public method toArray(p0: java.lang.Object[]): java.lang.Object[]
|
||||||
|
public method toString(): java.lang.String
|
||||||
|
public static method toString-impl(p0: java.util.Set): java.lang.String
|
||||||
|
public synthetic final method unbox-impl(): java.util.Set
|
||||||
|
}
|
||||||
+77
@@ -0,0 +1,77 @@
|
|||||||
|
public final class IT {
|
||||||
|
// source: 'mutableSet2.kt'
|
||||||
|
private final field x: int
|
||||||
|
private synthetic method <init>(p0: int): void
|
||||||
|
public synthetic final static method box-impl(p0: int): IT
|
||||||
|
public static method constructor-impl(p0: int): int
|
||||||
|
public method equals(p0: java.lang.Object): boolean
|
||||||
|
public static method equals-impl(p0: int, p1: java.lang.Object): boolean
|
||||||
|
public final static method equals-impl0(p0: int, p1: int): boolean
|
||||||
|
public final method getX(): int
|
||||||
|
public method hashCode(): int
|
||||||
|
public static method hashCode-impl(p0: int): int
|
||||||
|
public method toString(): java.lang.String
|
||||||
|
public static method toString-impl(p0: int): java.lang.String
|
||||||
|
public synthetic final method unbox-impl(): int
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class IT2 {
|
||||||
|
// source: 'mutableSet2.kt'
|
||||||
|
private final field x: int
|
||||||
|
private synthetic method <init>(p0: int): void
|
||||||
|
public synthetic final static method box-impl(p0: int): IT2
|
||||||
|
public static method constructor-impl(p0: int): int
|
||||||
|
public method equals(p0: java.lang.Object): boolean
|
||||||
|
public static method equals-impl(p0: int, p1: java.lang.Object): boolean
|
||||||
|
public final static method equals-impl0(p0: int, p1: int): boolean
|
||||||
|
public final method getX-XAcLw3A(): int
|
||||||
|
public method hashCode(): int
|
||||||
|
public static method hashCode-impl(p0: int): int
|
||||||
|
public method toString(): java.lang.String
|
||||||
|
public static method toString-impl(p0: int): java.lang.String
|
||||||
|
public synthetic final method unbox-impl(): int
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class InlineMutableSet2 {
|
||||||
|
// source: 'mutableSet2.kt'
|
||||||
|
private final field ms: java.util.Set
|
||||||
|
private synthetic method <init>(p0: java.util.Set): void
|
||||||
|
public synthetic bridge method add(p0: java.lang.Object): boolean
|
||||||
|
public method add-C2ZI6mw(p0: int): boolean
|
||||||
|
public static method add-C2ZI6mw(p0: java.util.Set, p1: int): boolean
|
||||||
|
public method addAll(p0: java.util.Collection): boolean
|
||||||
|
public static method addAll-impl(p0: java.util.Set, p1: java.util.Collection): boolean
|
||||||
|
public synthetic final static method box-impl(p0: java.util.Set): InlineMutableSet2
|
||||||
|
public method clear(): void
|
||||||
|
public static method clear-impl(p0: java.util.Set): void
|
||||||
|
public static method constructor-impl(p0: java.util.Set): java.util.Set
|
||||||
|
public synthetic bridge method contains(p0: java.lang.Object): boolean
|
||||||
|
public method contains-C2ZI6mw(p0: int): boolean
|
||||||
|
public static method contains-C2ZI6mw(p0: java.util.Set, p1: int): boolean
|
||||||
|
public method containsAll(p0: java.util.Collection): boolean
|
||||||
|
public static method containsAll-impl(p0: java.util.Set, p1: java.util.Collection): boolean
|
||||||
|
public method equals(p0: java.lang.Object): boolean
|
||||||
|
public static method equals-impl(p0: java.util.Set, p1: java.lang.Object): boolean
|
||||||
|
public final static method equals-impl0(p0: java.util.Set, p1: java.util.Set): boolean
|
||||||
|
public method getSize(): int
|
||||||
|
public static method getSize-impl(p0: java.util.Set): int
|
||||||
|
public method hashCode(): int
|
||||||
|
public static method hashCode-impl(p0: java.util.Set): int
|
||||||
|
public method isEmpty(): boolean
|
||||||
|
public static method isEmpty-impl(p0: java.util.Set): boolean
|
||||||
|
public method iterator(): java.util.Iterator
|
||||||
|
public static method iterator-impl(p0: java.util.Set): java.util.Iterator
|
||||||
|
public bridge final method remove(p0: java.lang.Object): boolean
|
||||||
|
public method remove-C2ZI6mw(p0: IT2): boolean
|
||||||
|
public static method remove-C2ZI6mw(p0: java.util.Set, p1: IT2): boolean
|
||||||
|
public method removeAll(p0: java.util.Collection): boolean
|
||||||
|
public static method removeAll-impl(p0: java.util.Set, p1: java.util.Collection): boolean
|
||||||
|
public method retainAll(p0: java.util.Collection): boolean
|
||||||
|
public static method retainAll-impl(p0: java.util.Set, p1: java.util.Collection): boolean
|
||||||
|
public synthetic bridge method size(): int
|
||||||
|
public method toArray(): java.lang.Object[]
|
||||||
|
public method toArray(p0: java.lang.Object[]): java.lang.Object[]
|
||||||
|
public method toString(): java.lang.String
|
||||||
|
public static method toString-impl(p0: java.util.Set): java.lang.String
|
||||||
|
public synthetic final method unbox-impl(): java.util.Set
|
||||||
|
}
|
||||||
+60
@@ -0,0 +1,60 @@
|
|||||||
|
public final class IT {
|
||||||
|
// source: 'mutableSet.kt'
|
||||||
|
private final field x: int
|
||||||
|
private synthetic method <init>(p0: int): void
|
||||||
|
public synthetic final static method box-impl(p0: int): IT
|
||||||
|
public static method constructor-impl(p0: int): int
|
||||||
|
public method equals(p0: java.lang.Object): boolean
|
||||||
|
public static method equals-impl(p0: int, p1: java.lang.Object): boolean
|
||||||
|
public final static method equals-impl0(p0: int, p1: int): boolean
|
||||||
|
public final method getX(): int
|
||||||
|
public method hashCode(): int
|
||||||
|
public static method hashCode-impl(p0: int): int
|
||||||
|
public method toString(): java.lang.String
|
||||||
|
public static method toString-impl(p0: int): java.lang.String
|
||||||
|
public synthetic final method unbox-impl(): int
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class InlineMutableSet {
|
||||||
|
// source: 'mutableSet.kt'
|
||||||
|
private final field ms: java.util.Set
|
||||||
|
private synthetic method <init>(p0: java.util.Set): void
|
||||||
|
public synthetic bridge method add(p0: java.lang.Object): boolean
|
||||||
|
public method add-jHY5zpA(p0: int): boolean
|
||||||
|
public static method add-jHY5zpA(p0: java.util.Set, p1: int): boolean
|
||||||
|
public method addAll(p0: java.util.Collection): boolean
|
||||||
|
public static method addAll-impl(p0: java.util.Set, p1: java.util.Collection): boolean
|
||||||
|
public synthetic final static method box-impl(p0: java.util.Set): InlineMutableSet
|
||||||
|
public method clear(): void
|
||||||
|
public static method clear-impl(p0: java.util.Set): void
|
||||||
|
public static method constructor-impl(p0: java.util.Set): java.util.Set
|
||||||
|
public synthetic bridge method contains(p0: java.lang.Object): boolean
|
||||||
|
public method contains-jHY5zpA(p0: int): boolean
|
||||||
|
public static method contains-jHY5zpA(p0: java.util.Set, p1: int): boolean
|
||||||
|
public method containsAll(p0: java.util.Collection): boolean
|
||||||
|
public static method containsAll-impl(p0: java.util.Set, p1: java.util.Collection): boolean
|
||||||
|
public method equals(p0: java.lang.Object): boolean
|
||||||
|
public static method equals-impl(p0: java.util.Set, p1: java.lang.Object): boolean
|
||||||
|
public final static method equals-impl0(p0: java.util.Set, p1: java.util.Set): boolean
|
||||||
|
public method getSize(): int
|
||||||
|
public static method getSize-impl(p0: java.util.Set): int
|
||||||
|
public method hashCode(): int
|
||||||
|
public static method hashCode-impl(p0: java.util.Set): int
|
||||||
|
public method isEmpty(): boolean
|
||||||
|
public static method isEmpty-impl(p0: java.util.Set): boolean
|
||||||
|
public method iterator(): java.util.Iterator
|
||||||
|
public static method iterator-impl(p0: java.util.Set): java.util.Iterator
|
||||||
|
public bridge final method remove(p0: java.lang.Object): boolean
|
||||||
|
public method remove-jHY5zpA(p0: IT): boolean
|
||||||
|
public static method remove-jHY5zpA(p0: java.util.Set, p1: IT): boolean
|
||||||
|
public method removeAll(p0: java.util.Collection): boolean
|
||||||
|
public static method removeAll-impl(p0: java.util.Set, p1: java.util.Collection): boolean
|
||||||
|
public method retainAll(p0: java.util.Collection): boolean
|
||||||
|
public static method retainAll-impl(p0: java.util.Set, p1: java.util.Collection): boolean
|
||||||
|
public synthetic bridge method size(): int
|
||||||
|
public method toArray(): java.lang.Object[]
|
||||||
|
public method toArray(p0: java.lang.Object[]): java.lang.Object[]
|
||||||
|
public method toString(): java.lang.String
|
||||||
|
public static method toString-impl(p0: java.util.Set): java.lang.String
|
||||||
|
public synthetic final method unbox-impl(): java.util.Set
|
||||||
|
}
|
||||||
+27
@@ -0,0 +1,27 @@
|
|||||||
|
class IntMutableCollection(private val mc: MutableCollection<Int>) : MutableCollection<Int> {
|
||||||
|
override val size: Int get() = mc.size
|
||||||
|
override fun contains(element: Int): Boolean = mc.contains(element)
|
||||||
|
override fun containsAll(elements: Collection<Int>): Boolean = mc.containsAll(elements)
|
||||||
|
override fun isEmpty(): Boolean = mc.isEmpty()
|
||||||
|
override fun add(element: Int): Boolean = mc.add(element)
|
||||||
|
override fun addAll(elements: Collection<Int>): Boolean = mc.addAll(elements)
|
||||||
|
override fun clear() { mc.clear() }
|
||||||
|
override fun iterator(): MutableIterator<Int> = mc.iterator()
|
||||||
|
override fun remove(element: Int): Boolean = mc.remove(element)
|
||||||
|
override fun removeAll(elements: Collection<Int>): Boolean = mc.removeAll(elements)
|
||||||
|
override fun retainAll(elements: Collection<Int>): Boolean = mc.retainAll(elements)
|
||||||
|
}
|
||||||
|
|
||||||
|
class LongMutableCollection(private val mc: MutableCollection<Long>) : MutableCollection<Long> {
|
||||||
|
override val size: Int get() = mc.size
|
||||||
|
override fun contains(element: Long): Boolean = mc.contains(element)
|
||||||
|
override fun containsAll(elements: Collection<Long>): Boolean = mc.containsAll(elements)
|
||||||
|
override fun isEmpty(): Boolean = mc.isEmpty()
|
||||||
|
override fun add(element: Long): Boolean = mc.add(element)
|
||||||
|
override fun addAll(elements: Collection<Long>): Boolean = mc.addAll(elements)
|
||||||
|
override fun clear() { mc.clear() }
|
||||||
|
override fun iterator(): MutableIterator<Long> = mc.iterator()
|
||||||
|
override fun remove(element: Long): Boolean = mc.remove(element)
|
||||||
|
override fun removeAll(elements: Collection<Long>): Boolean = mc.removeAll(elements)
|
||||||
|
override fun retainAll(elements: Collection<Long>): Boolean = mc.retainAll(elements)
|
||||||
|
}
|
||||||
+47
@@ -0,0 +1,47 @@
|
|||||||
|
@kotlin.Metadata
|
||||||
|
public final class IntMutableCollection {
|
||||||
|
// source: 'mutableCollectionOfPrimitive.kt'
|
||||||
|
private final field mc: java.util.Collection
|
||||||
|
public method <init>(@org.jetbrains.annotations.NotNull p0: java.util.Collection): void
|
||||||
|
public method add(p0: int): boolean
|
||||||
|
public synthetic bridge method add(p0: java.lang.Object): boolean
|
||||||
|
public method addAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean
|
||||||
|
public method clear(): void
|
||||||
|
public method contains(p0: int): boolean
|
||||||
|
public bridge final method contains(p0: java.lang.Object): boolean
|
||||||
|
public method containsAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean
|
||||||
|
public method getSize(): int
|
||||||
|
public method isEmpty(): boolean
|
||||||
|
public @org.jetbrains.annotations.NotNull method iterator(): java.util.Iterator
|
||||||
|
public method remove(@org.jetbrains.annotations.NotNull p0: java.lang.Integer): boolean
|
||||||
|
public bridge final method remove(p0: java.lang.Object): boolean
|
||||||
|
public method removeAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean
|
||||||
|
public method retainAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean
|
||||||
|
public bridge final method size(): int
|
||||||
|
public method toArray(): java.lang.Object[]
|
||||||
|
public method toArray(p0: java.lang.Object[]): java.lang.Object[]
|
||||||
|
}
|
||||||
|
|
||||||
|
@kotlin.Metadata
|
||||||
|
public final class LongMutableCollection {
|
||||||
|
// source: 'mutableCollectionOfPrimitive.kt'
|
||||||
|
private final field mc: java.util.Collection
|
||||||
|
public method <init>(@org.jetbrains.annotations.NotNull p0: java.util.Collection): void
|
||||||
|
public synthetic bridge method add(p0: java.lang.Object): boolean
|
||||||
|
public method add(p0: long): boolean
|
||||||
|
public method addAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean
|
||||||
|
public method clear(): void
|
||||||
|
public bridge final method contains(p0: java.lang.Object): boolean
|
||||||
|
public method contains(p0: long): boolean
|
||||||
|
public method containsAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean
|
||||||
|
public method getSize(): int
|
||||||
|
public method isEmpty(): boolean
|
||||||
|
public @org.jetbrains.annotations.NotNull method iterator(): java.util.Iterator
|
||||||
|
public bridge final method remove(p0: java.lang.Object): boolean
|
||||||
|
public method remove(p0: long): boolean
|
||||||
|
public method removeAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean
|
||||||
|
public method retainAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean
|
||||||
|
public bridge final method size(): int
|
||||||
|
public method toArray(): java.lang.Object[]
|
||||||
|
public method toArray(p0: java.lang.Object[]): java.lang.Object[]
|
||||||
|
}
|
||||||
Vendored
+47
@@ -0,0 +1,47 @@
|
|||||||
|
@kotlin.Metadata
|
||||||
|
public final class IntMutableCollection {
|
||||||
|
// source: 'mutableCollectionOfPrimitive.kt'
|
||||||
|
private final @org.jetbrains.annotations.NotNull field mc: java.util.Collection
|
||||||
|
public method <init>(@org.jetbrains.annotations.NotNull p0: java.util.Collection): void
|
||||||
|
public method add(p0: int): boolean
|
||||||
|
public synthetic bridge method add(p0: java.lang.Object): boolean
|
||||||
|
public method addAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean
|
||||||
|
public method clear(): void
|
||||||
|
public method contains(p0: int): boolean
|
||||||
|
public bridge final method contains(p0: java.lang.Object): boolean
|
||||||
|
public method containsAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean
|
||||||
|
public method getSize(): int
|
||||||
|
public method isEmpty(): boolean
|
||||||
|
public @org.jetbrains.annotations.NotNull method iterator(): java.util.Iterator
|
||||||
|
public method remove(@org.jetbrains.annotations.Nullable p0: java.lang.Integer): boolean
|
||||||
|
public bridge final method remove(p0: java.lang.Object): boolean
|
||||||
|
public method removeAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean
|
||||||
|
public method retainAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean
|
||||||
|
public bridge final method size(): int
|
||||||
|
public method toArray(): java.lang.Object[]
|
||||||
|
public method toArray(p0: java.lang.Object[]): java.lang.Object[]
|
||||||
|
}
|
||||||
|
|
||||||
|
@kotlin.Metadata
|
||||||
|
public final class LongMutableCollection {
|
||||||
|
// source: 'mutableCollectionOfPrimitive.kt'
|
||||||
|
private final @org.jetbrains.annotations.NotNull field mc: java.util.Collection
|
||||||
|
public method <init>(@org.jetbrains.annotations.NotNull p0: java.util.Collection): void
|
||||||
|
public synthetic bridge method add(p0: java.lang.Object): boolean
|
||||||
|
public method add(p0: long): boolean
|
||||||
|
public method addAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean
|
||||||
|
public method clear(): void
|
||||||
|
public bridge final method contains(p0: java.lang.Object): boolean
|
||||||
|
public method contains(p0: long): boolean
|
||||||
|
public method containsAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean
|
||||||
|
public method getSize(): int
|
||||||
|
public method isEmpty(): boolean
|
||||||
|
public @org.jetbrains.annotations.NotNull method iterator(): java.util.Iterator
|
||||||
|
public bridge final method remove(p0: java.lang.Object): boolean
|
||||||
|
public method remove(p0: long): boolean
|
||||||
|
public method removeAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean
|
||||||
|
public method retainAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean
|
||||||
|
public bridge final method size(): int
|
||||||
|
public method toArray(): java.lang.Object[]
|
||||||
|
public method toArray(p0: java.lang.Object[]): java.lang.Object[]
|
||||||
|
}
|
||||||
+10
@@ -5063,6 +5063,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
|
|||||||
runTest("compiler/testData/codegen/box/collections/irrelevantSizeOverrideInJava.kt");
|
runTest("compiler/testData/codegen/box/collections/irrelevantSizeOverrideInJava.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("javaCollectionWithRemovePrimitiveInt.kt")
|
||||||
|
public void testJavaCollectionWithRemovePrimitiveInt() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/collections/javaCollectionWithRemovePrimitiveInt.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("kt41123.kt")
|
@TestMetadata("kt41123.kt")
|
||||||
public void testKt41123() throws Exception {
|
public void testKt41123() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/collections/kt41123.kt");
|
runTest("compiler/testData/codegen/box/collections/kt41123.kt");
|
||||||
@@ -15437,6 +15442,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
|
|||||||
runTest("compiler/testData/codegen/box/inlineClasses/referToUnderlyingPropertyOfInlineClass.kt");
|
runTest("compiler/testData/codegen/box/inlineClasses/referToUnderlyingPropertyOfInlineClass.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("removeInInlineCollectionOfInlineClassAsInt.kt")
|
||||||
|
public void testRemoveInInlineCollectionOfInlineClassAsInt() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/removeInInlineCollectionOfInlineClassAsInt.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("resultInlining.kt")
|
@TestMetadata("resultInlining.kt")
|
||||||
public void testResultInlining() throws Exception {
|
public void testResultInlining() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/inlineClasses/resultInlining.kt");
|
runTest("compiler/testData/codegen/box/inlineClasses/resultInlining.kt");
|
||||||
|
|||||||
+10
@@ -1057,6 +1057,11 @@ public class BytecodeListingTestGenerated extends AbstractBytecodeListingTest {
|
|||||||
runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/mutableSet.kt");
|
runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/mutableSet.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("mutableSet2.kt")
|
||||||
|
public void testMutableSet2() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/mutableSet2.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("set.kt")
|
@TestMetadata("set.kt")
|
||||||
public void testSet() throws Exception {
|
public void testSet() throws Exception {
|
||||||
runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/set.kt");
|
runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/set.kt");
|
||||||
@@ -1307,6 +1312,11 @@ public class BytecodeListingTestGenerated extends AbstractBytecodeListingTest {
|
|||||||
runTest("compiler/testData/codegen/bytecodeListing/specialBridges/kt41123.kt");
|
runTest("compiler/testData/codegen/bytecodeListing/specialBridges/kt41123.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("mutableCollectionOfPrimitive.kt")
|
||||||
|
public void testMutableCollectionOfPrimitive() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/bytecodeListing/specialBridges/mutableCollectionOfPrimitive.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("mutableListOfPrimitive.kt")
|
@TestMetadata("mutableListOfPrimitive.kt")
|
||||||
public void testMutableListOfPrimitive() throws Exception {
|
public void testMutableListOfPrimitive() throws Exception {
|
||||||
runTest("compiler/testData/codegen/bytecodeListing/specialBridges/mutableListOfPrimitive.kt");
|
runTest("compiler/testData/codegen/bytecodeListing/specialBridges/mutableListOfPrimitive.kt");
|
||||||
|
|||||||
+10
@@ -5063,6 +5063,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
|
|||||||
runTest("compiler/testData/codegen/box/collections/irrelevantSizeOverrideInJava.kt");
|
runTest("compiler/testData/codegen/box/collections/irrelevantSizeOverrideInJava.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("javaCollectionWithRemovePrimitiveInt.kt")
|
||||||
|
public void testJavaCollectionWithRemovePrimitiveInt() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/collections/javaCollectionWithRemovePrimitiveInt.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("kt41123.kt")
|
@TestMetadata("kt41123.kt")
|
||||||
public void testKt41123() throws Exception {
|
public void testKt41123() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/collections/kt41123.kt");
|
runTest("compiler/testData/codegen/box/collections/kt41123.kt");
|
||||||
@@ -15447,6 +15452,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
|
|||||||
runTest("compiler/testData/codegen/box/inlineClasses/referToUnderlyingPropertyOfInlineClass.kt");
|
runTest("compiler/testData/codegen/box/inlineClasses/referToUnderlyingPropertyOfInlineClass.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("removeInInlineCollectionOfInlineClassAsInt.kt")
|
||||||
|
public void testRemoveInInlineCollectionOfInlineClassAsInt() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/removeInInlineCollectionOfInlineClassAsInt.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("resultInlining.kt")
|
@TestMetadata("resultInlining.kt")
|
||||||
public void testResultInlining() throws Exception {
|
public void testResultInlining() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/inlineClasses/resultInlining.kt");
|
runTest("compiler/testData/codegen/box/inlineClasses/resultInlining.kt");
|
||||||
|
|||||||
+10
@@ -5033,6 +5033,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
|
|||||||
runTest("compiler/testData/codegen/box/collections/irrelevantSizeOverrideInJava.kt");
|
runTest("compiler/testData/codegen/box/collections/irrelevantSizeOverrideInJava.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("javaCollectionWithRemovePrimitiveInt.kt")
|
||||||
|
public void testJavaCollectionWithRemovePrimitiveInt() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/collections/javaCollectionWithRemovePrimitiveInt.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("kt41123.kt")
|
@TestMetadata("kt41123.kt")
|
||||||
public void testKt41123() throws Exception {
|
public void testKt41123() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/collections/kt41123.kt");
|
runTest("compiler/testData/codegen/box/collections/kt41123.kt");
|
||||||
@@ -14042,6 +14047,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
|
|||||||
runTest("compiler/testData/codegen/box/inlineClasses/referToUnderlyingPropertyOfInlineClass.kt");
|
runTest("compiler/testData/codegen/box/inlineClasses/referToUnderlyingPropertyOfInlineClass.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("removeInInlineCollectionOfInlineClassAsInt.kt")
|
||||||
|
public void testRemoveInInlineCollectionOfInlineClassAsInt() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/removeInInlineCollectionOfInlineClassAsInt.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("resultInlining.kt")
|
@TestMetadata("resultInlining.kt")
|
||||||
public void testResultInlining() throws Exception {
|
public void testResultInlining() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/inlineClasses/resultInlining.kt");
|
runTest("compiler/testData/codegen/box/inlineClasses/resultInlining.kt");
|
||||||
|
|||||||
+10
@@ -1027,6 +1027,11 @@ public class IrBytecodeListingTestGenerated extends AbstractIrBytecodeListingTes
|
|||||||
runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/mutableSet.kt");
|
runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/mutableSet.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("mutableSet2.kt")
|
||||||
|
public void testMutableSet2() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/mutableSet2.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("set.kt")
|
@TestMetadata("set.kt")
|
||||||
public void testSet() throws Exception {
|
public void testSet() throws Exception {
|
||||||
runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/set.kt");
|
runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/set.kt");
|
||||||
@@ -1277,6 +1282,11 @@ public class IrBytecodeListingTestGenerated extends AbstractIrBytecodeListingTes
|
|||||||
runTest("compiler/testData/codegen/bytecodeListing/specialBridges/kt41123.kt");
|
runTest("compiler/testData/codegen/bytecodeListing/specialBridges/kt41123.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("mutableCollectionOfPrimitive.kt")
|
||||||
|
public void testMutableCollectionOfPrimitive() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/bytecodeListing/specialBridges/mutableCollectionOfPrimitive.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("mutableListOfPrimitive.kt")
|
@TestMetadata("mutableListOfPrimitive.kt")
|
||||||
public void testMutableListOfPrimitive() throws Exception {
|
public void testMutableListOfPrimitive() throws Exception {
|
||||||
runTest("compiler/testData/codegen/bytecodeListing/specialBridges/mutableListOfPrimitive.kt");
|
runTest("compiler/testData/codegen/bytecodeListing/specialBridges/mutableListOfPrimitive.kt");
|
||||||
|
|||||||
Generated
+5
@@ -12052,6 +12052,11 @@ public class IrJsCodegenBoxES6TestGenerated extends AbstractIrJsCodegenBoxES6Tes
|
|||||||
runTest("compiler/testData/codegen/box/inlineClasses/referToUnderlyingPropertyOfInlineClass.kt");
|
runTest("compiler/testData/codegen/box/inlineClasses/referToUnderlyingPropertyOfInlineClass.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("removeInInlineCollectionOfInlineClassAsInt.kt")
|
||||||
|
public void testRemoveInInlineCollectionOfInlineClassAsInt() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/removeInInlineCollectionOfInlineClassAsInt.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("resultInlining.kt")
|
@TestMetadata("resultInlining.kt")
|
||||||
public void testResultInlining() throws Exception {
|
public void testResultInlining() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/inlineClasses/resultInlining.kt");
|
runTest("compiler/testData/codegen/box/inlineClasses/resultInlining.kt");
|
||||||
|
|||||||
Generated
+5
@@ -12052,6 +12052,11 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
|
|||||||
runTest("compiler/testData/codegen/box/inlineClasses/referToUnderlyingPropertyOfInlineClass.kt");
|
runTest("compiler/testData/codegen/box/inlineClasses/referToUnderlyingPropertyOfInlineClass.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("removeInInlineCollectionOfInlineClassAsInt.kt")
|
||||||
|
public void testRemoveInInlineCollectionOfInlineClassAsInt() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/removeInInlineCollectionOfInlineClassAsInt.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("resultInlining.kt")
|
@TestMetadata("resultInlining.kt")
|
||||||
public void testResultInlining() throws Exception {
|
public void testResultInlining() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/inlineClasses/resultInlining.kt");
|
runTest("compiler/testData/codegen/box/inlineClasses/resultInlining.kt");
|
||||||
|
|||||||
+5
@@ -12117,6 +12117,11 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest {
|
|||||||
runTest("compiler/testData/codegen/box/inlineClasses/referToUnderlyingPropertyOfInlineClass.kt");
|
runTest("compiler/testData/codegen/box/inlineClasses/referToUnderlyingPropertyOfInlineClass.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("removeInInlineCollectionOfInlineClassAsInt.kt")
|
||||||
|
public void testRemoveInInlineCollectionOfInlineClassAsInt() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/removeInInlineCollectionOfInlineClassAsInt.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("resultInlining.kt")
|
@TestMetadata("resultInlining.kt")
|
||||||
public void testResultInlining() throws Exception {
|
public void testResultInlining() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/inlineClasses/resultInlining.kt");
|
runTest("compiler/testData/codegen/box/inlineClasses/resultInlining.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user