From a412596d8ef3ccb904db0167eac7480e89b753f6 Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Thu, 8 Oct 2020 15:32:18 +0300 Subject: [PATCH] JVM_IR emulate old back-end behavior in special bridges + inline classes KT-42491 KT-42539 --- .../common/lower/SpecialBridgeMethods.kt | 6 +- .../backend/jvm/codegen/FunctionCodegen.kt | 28 +- .../backend/jvm/lower/BridgeLowering.kt | 17 +- .../MemoizedInlineClassReplacements.kt | 17 +- .../inlineClassImplementingCollection.kt | 137 ----- .../inlineClassImplementingCollection.txt | 484 ------------------ .../inlineClassImplementingCollection_ir.txt | 484 ------------------ .../inlineCollection/collection.kt | 10 + .../inlineCollection/collection.txt | 34 ++ .../inlineCollection/collection_ir.txt | 34 ++ .../inlineCollection/iterable.kt | 6 + .../inlineCollection/iterable.txt | 17 + .../inlineCollection/iterator.kt | 7 + .../inlineCollection/iterator.txt | 20 + .../inlineClasses/inlineCollection/list.kt | 16 + .../inlineClasses/inlineCollection/list.txt | 50 ++ .../inlineCollection/list_ir.txt | 50 ++ .../inlineClasses/inlineCollection/map.kt | 13 + .../inlineClasses/inlineCollection/map.txt | 39 ++ .../inlineCollection/mapEntry.kt | 7 + .../inlineCollection/mapEntry.txt | 20 + .../inlineClasses/inlineCollection/map_ir.txt | 39 ++ .../inlineCollection/mutableCollection.kt | 16 + .../inlineCollection/mutableCollection.txt | 40 ++ .../inlineCollection/mutableCollection_ir.txt | 40 ++ .../inlineCollection/mutableIterable.kt | 6 + .../inlineCollection/mutableIterable.txt | 17 + .../inlineCollection/mutableIterator.kt | 8 + .../inlineCollection/mutableIterator.txt | 21 + .../inlineCollection/mutableList.kt | 26 + .../inlineCollection/mutableList.txt | 61 +++ .../inlineCollection/mutableList_ir.txt | 61 +++ .../inlineCollection/mutableMap.kt | 17 + .../inlineCollection/mutableMap.txt | 43 ++ .../inlineCollection/mutableMapEntry.kt | 7 + .../inlineCollection/mutableMapEntry.txt | 21 + .../inlineCollection/mutableMap_ir.txt | 43 ++ .../inlineCollection/mutableSet.kt | 16 + .../inlineCollection/mutableSet.txt | 40 ++ .../inlineCollection/mutableSet_ir.txt | 40 ++ .../inlineClasses/inlineCollection/set.kt | 10 + .../inlineClasses/inlineCollection/set.txt | 34 ++ .../inlineClasses/inlineCollection/set_ir.txt | 34 ++ .../inlineCollectionOfInlineClass/list.kt | 2 - .../inlineCollectionOfInlineClass/list_ir.txt | 75 +++ .../mutableList.kt | 4 +- .../mutableList.txt | 58 +-- .../mutableList_ir.txt | 87 ++++ .../abstractMutableCollectionOfPrimitive.kt | 3 + .../abstractMutableCollectionOfPrimitive.txt | 19 + .../abstractMutableListOfPrimitive.kt | 3 + .../abstractMutableListOfPrimitive.txt | 19 + .../abstractMutableLists_ir.txt | 4 +- .../specialBridges/mutableListOfPrimitive.kt | 25 + .../specialBridges/mutableListOfPrimitive.txt | 39 ++ .../codegen/BytecodeListingTestGenerated.java | 103 +++- .../ir/IrBytecodeListingTestGenerated.java | 103 +++- 57 files changed, 1508 insertions(+), 1172 deletions(-) delete mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineClassImplementingCollection.kt delete mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineClassImplementingCollection.txt delete mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineClassImplementingCollection_ir.txt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/collection.kt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/collection.txt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/collection_ir.txt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/iterable.kt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/iterable.txt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/iterator.kt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/iterator.txt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/list.kt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/list.txt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/list_ir.txt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/map.kt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/map.txt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mapEntry.kt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mapEntry.txt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/map_ir.txt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableCollection.kt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableCollection.txt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableCollection_ir.txt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableIterable.kt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableIterable.txt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableIterator.kt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableIterator.txt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableList.kt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableList.txt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableList_ir.txt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableMap.kt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableMap.txt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableMapEntry.kt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableMapEntry.txt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableMap_ir.txt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableSet.kt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableSet.txt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableSet_ir.txt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/set.kt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/set.txt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/set_ir.txt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/list_ir.txt create mode 100644 compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/mutableList_ir.txt create mode 100644 compiler/testData/codegen/bytecodeListing/specialBridges/abstractMutableCollectionOfPrimitive.kt create mode 100644 compiler/testData/codegen/bytecodeListing/specialBridges/abstractMutableCollectionOfPrimitive.txt create mode 100644 compiler/testData/codegen/bytecodeListing/specialBridges/abstractMutableListOfPrimitive.kt create mode 100644 compiler/testData/codegen/bytecodeListing/specialBridges/abstractMutableListOfPrimitive.txt create mode 100644 compiler/testData/codegen/bytecodeListing/specialBridges/mutableListOfPrimitive.kt create mode 100644 compiler/testData/codegen/bytecodeListing/specialBridges/mutableListOfPrimitive.txt diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/SpecialBridgeMethods.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/SpecialBridgeMethods.kt index ebe0cd2a5ed..f659591b286 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/SpecialBridgeMethods.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/SpecialBridgeMethods.kt @@ -29,6 +29,7 @@ data class SpecialMethodWithDefaultInfo( class BuiltInWithDifferentJvmName( val needsGenericSignature: Boolean = false, + val isOverriding: Boolean = true ) class SpecialBridgeMethods(val context: CommonBackendContext) { @@ -66,7 +67,7 @@ class SpecialBridgeMethods(val context: CommonBackendContext) { makeDescription(StandardNames.FqNames.collection, "contains", 1) to SpecialMethodWithDefaultInfo(::constFalse, 1), makeDescription(StandardNames.FqNames.mutableCollection, "remove", 1) to - SpecialMethodWithDefaultInfo(::constFalse, 1, needsArgumentBoxing = true), + SpecialMethodWithDefaultInfo(::constFalse, 1, needsArgumentBoxing = false), makeDescription(StandardNames.FqNames.map, "containsKey", 1) to SpecialMethodWithDefaultInfo(::constFalse, 1), makeDescription(StandardNames.FqNames.map, "containsValue", 1) to @@ -102,7 +103,8 @@ class SpecialBridgeMethods(val context: CommonBackendContext) { makeDescription(StandardNames.FqNames.number.toSafe(), "toFloat") to BuiltInWithDifferentJvmName(), makeDescription(StandardNames.FqNames.number.toSafe(), "toDouble") to BuiltInWithDifferentJvmName(), makeDescription(StandardNames.FqNames.charSequence.toSafe(), "get", 1) to BuiltInWithDifferentJvmName(), - makeDescription(StandardNames.FqNames.mutableList, "removeAt", 1) to BuiltInWithDifferentJvmName(needsGenericSignature = true) + makeDescription(StandardNames.FqNames.mutableList, "removeAt", 1) to + BuiltInWithDifferentJvmName(needsGenericSignature = true, isOverriding = false) ) val specialMethodNames = (specialMethodsWithDefaults + specialMethods).map { (description) -> description.name }.toHashSet() diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/FunctionCodegen.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/FunctionCodegen.kt index 82cbc7fedc1..b1ffc94f952 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/FunctionCodegen.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/FunctionCodegen.kt @@ -20,8 +20,8 @@ import org.jetbrains.kotlin.codegen.mangleNameIfNeeded import org.jetbrains.kotlin.codegen.state.GenerationState import org.jetbrains.kotlin.codegen.visitAnnotableParameterCount import org.jetbrains.kotlin.config.LanguageFeature -import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.DescriptorVisibilities +import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.descriptors.toIrBasedDescriptor import org.jetbrains.kotlin.ir.expressions.* @@ -70,16 +70,7 @@ class FunctionCodegen( generateParameterNames(irFunction, methodVisitor, signature, context.state) } - if (irFunction.origin != IrDeclarationOrigin.FUNCTION_FOR_DEFAULT_PARAMETER && - irFunction.origin != JvmLoweredDeclarationOrigin.SYNTHETIC_ACCESSOR && - irFunction.origin != IrDeclarationOrigin.ENUM_CLASS_SPECIAL_MEMBER && - irFunction.origin != IrDeclarationOrigin.GENERATED_INLINE_CLASS_MEMBER && - irFunction.origin != IrDeclarationOrigin.BRIDGE && - irFunction.origin != IrDeclarationOrigin.BRIDGE_SPECIAL && - irFunction.origin != JvmLoweredDeclarationOrigin.ABSTRACT_BRIDGE_STUB && - irFunction.origin != JvmLoweredDeclarationOrigin.TO_ARRAY && - irFunction.origin != IrDeclarationOrigin.IR_BUILTINS_STUB - ) { + if (irFunction.origin !in methodOriginsWithoutAnnotations) { val skipNullabilityAnnotations = flags and Opcodes.ACC_PRIVATE != 0 || flags and Opcodes.ACC_SYNTHETIC != 0 object : AnnotationCodegen(classCodegen, context, skipNullabilityAnnotations) { override fun visitAnnotation(descr: String?, visible: Boolean): AnnotationVisitor { @@ -281,6 +272,21 @@ class FunctionCodegen( } } } + + companion object { + internal val methodOriginsWithoutAnnotations = + setOf( + IrDeclarationOrigin.FUNCTION_FOR_DEFAULT_PARAMETER, + JvmLoweredDeclarationOrigin.SYNTHETIC_ACCESSOR, + IrDeclarationOrigin.ENUM_CLASS_SPECIAL_MEMBER, + IrDeclarationOrigin.GENERATED_INLINE_CLASS_MEMBER, + IrDeclarationOrigin.BRIDGE, + IrDeclarationOrigin.BRIDGE_SPECIAL, + JvmLoweredDeclarationOrigin.ABSTRACT_BRIDGE_STUB, + JvmLoweredDeclarationOrigin.TO_ARRAY, + IrDeclarationOrigin.IR_BUILTINS_STUB, + ) + } } diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/BridgeLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/BridgeLowering.kt index dd15324346f..7e7e36ee270 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/BridgeLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/BridgeLowering.kt @@ -159,6 +159,7 @@ internal class BridgeLowering(val context: JvmBackendContext) : FileLoweringPass val superQualifierSymbol: IrClassSymbol? = null, val isFinal: Boolean = true, val isSynthetic: Boolean = false, + val isOverriding: Boolean = true, ) private val potentialBridgeTargets = mutableListOf() @@ -383,6 +384,7 @@ internal class BridgeLowering(val context: JvmBackendContext) : FileLoweringPass valueParameters = irFunction.valueParameters.map { param -> param.copyTo(this, type = if (needsArgumentBoxing) param.type.makeNullable() else param.type) } + overriddenSymbols = irFunction.overriddenSymbols.toList() } private fun IrClass.addBridge(bridge: Bridge, target: IrSimpleFunction): IrSimpleFunction = @@ -437,7 +439,10 @@ internal class BridgeLowering(val context: JvmBackendContext) : FileLoweringPass } +irReturn(delegatingCall(this@apply, target, specialBridge.superQualifierSymbol)) } - overriddenSymbols = listOf(specialBridge.overridden.symbol) + + if (specialBridge.isOverriding) { + overriddenSymbols = listOf(specialBridge.overridden.symbol) + } } private fun IrSimpleFunction.rewriteSpecialMethodBody( @@ -570,7 +575,10 @@ internal class BridgeLowering(val context: JvmBackendContext) : FileLoweringPass if (correspondingProperty != null) { if (correspondingProperty.owner.name !in specialBridgeMethods.specialPropertyNames) return null } else { - if (function.name !in specialBridgeMethods.specialMethodNames) return null + // 'removeAt' function can be mangled by inline class rules + if (function.name !in specialBridgeMethods.specialMethodNames && !function.name.asString().startsWith("removeAt-")) { + return null + } } val specialMethodInfo = specialBridgeMethods.getSpecialMethodInfo(function) @@ -581,7 +589,10 @@ internal class BridgeLowering(val context: JvmBackendContext) : FileLoweringPass val specialBuiltInInfo = specialBridgeMethods.getBuiltInWithDifferentJvmName(function) if (specialBuiltInInfo != null) - return SpecialBridge(function, computeJvmMethod(function), specialBuiltInInfo.needsGenericSignature) + return SpecialBridge( + function, computeJvmMethod(function), specialBuiltInInfo.needsGenericSignature, + isOverriding = specialBuiltInInfo.isOverriding + ) for (overridden in function.overriddenSymbols) { val specialBridge = computeSpecialBridge(overridden.owner) ?: continue diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/inlineclasses/MemoizedInlineClassReplacements.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/inlineclasses/MemoizedInlineClassReplacements.kt index 06ee5f7bf92..6fa2d2a6103 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/inlineclasses/MemoizedInlineClassReplacements.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/inlineclasses/MemoizedInlineClassReplacements.kt @@ -23,6 +23,7 @@ import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol import org.jetbrains.kotlin.ir.types.impl.IrSimpleTypeImpl import org.jetbrains.kotlin.ir.types.impl.IrStarProjectionImpl +import org.jetbrains.kotlin.ir.types.isInt import org.jetbrains.kotlin.ir.util.* import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.resolve.InlineClassDescriptorResolver @@ -57,11 +58,11 @@ class MemoizedInlineClassReplacements(private val mangleReturnTypes: Boolean, pr // Mangle all functions in the body of an inline class it.parent.safeAs()?.isInline == true -> - when (it.origin) { - IrDeclarationOrigin.IR_BUILTINS_STUB -> - createMethodReplacement(it) - IrDeclarationOrigin.BRIDGE_SPECIAL -> + when { + it.isRemoveAtSpecialBuiltinStub() -> null + it.origin == IrDeclarationOrigin.IR_BUILTINS_STUB -> + createMethodReplacement(it) else -> createStaticReplacement(it) } @@ -78,6 +79,12 @@ class MemoizedInlineClassReplacements(private val mangleReturnTypes: Boolean, pr } } + private fun IrFunction.isRemoveAtSpecialBuiltinStub() = + origin == IrDeclarationOrigin.IR_BUILTINS_STUB && + name.asString() == "remove" && + valueParameters.size == 1 && + valueParameters[0].type.isInt() + /** * Get the box function for an inline class. Concretely, this is a synthetic * static function named "box-impl" which takes an unboxed value and returns @@ -220,7 +227,7 @@ class MemoizedInlineClassReplacements(private val mangleReturnTypes: Boolean, pr val propertySymbol = function.correspondingPropertySymbol if (propertySymbol != null) { val property = propertyMap.getOrPut(propertySymbol) { - irFactory.buildProperty() { + irFactory.buildProperty { name = propertySymbol.owner.name updateFrom(propertySymbol.owner) }.apply { diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineClassImplementingCollection.kt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineClassImplementingCollection.kt deleted file mode 100644 index f343d700ba8..00000000000 --- a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineClassImplementingCollection.kt +++ /dev/null @@ -1,137 +0,0 @@ -inline class InlineIterator(private val it: Iterator) : Iterator { - override fun hasNext(): Boolean = it.hasNext() - override fun next(): T = it.next() -} - -inline class InlineMutableIterator(private val it: MutableIterator) : MutableIterator { - override fun hasNext(): Boolean = it.hasNext() - override fun next(): T = it.next() - override fun remove() { it.remove() } -} - -inline class InlineIterable(private val it: Iterable) : Iterable { - override fun iterator(): Iterator = it.iterator() -} - -inline class InlineMutableIterable(private val it: MutableIterable) : MutableIterable { - override fun iterator(): MutableIterator = it.iterator() -} - -inline class InlineCollection(private val c: Collection) : Collection { - override val size: Int get() = c.size - override fun contains(element: T): Boolean = c.contains(element) - override fun containsAll(elements: Collection): Boolean = c.containsAll(elements) - override fun isEmpty(): Boolean = c.isEmpty() - override fun iterator(): Iterator = c.iterator() -} - -inline class InlineMutableCollection(private val mc: MutableCollection) : MutableCollection { - override val size: Int get() = mc.size - override fun contains(element: T): Boolean = mc.contains(element) - override fun containsAll(elements: Collection): Boolean = mc.containsAll(elements) - override fun isEmpty(): Boolean = mc.isEmpty() - override fun add(element: T): Boolean = mc.add(element) - override fun addAll(elements: Collection): Boolean = mc.addAll(elements) - override fun clear() { mc.clear() } - override fun iterator(): MutableIterator = mc.iterator() - override fun remove(element: T): Boolean = mc.remove(element) - override fun removeAll(elements: Collection): Boolean = mc.removeAll(elements) - override fun retainAll(elements: Collection): Boolean = mc.retainAll(elements) -} - -inline class InlineList(private val list: List) : List { - override val size: Int get() = list.size - override fun contains(element: T): Boolean = list.contains(element) - override fun containsAll(elements: Collection): Boolean = list.containsAll(elements) - override fun get(index: Int): T = list[index] - override fun indexOf(element: T): Int = list.indexOf(element) - override fun isEmpty(): Boolean = list.isEmpty() - override fun iterator(): Iterator = list.iterator() - override fun lastIndexOf(element: T): Int = list.lastIndexOf(element) - override fun listIterator(): ListIterator = list.listIterator() - override fun listIterator(index: Int): ListIterator = list.listIterator(index) - override fun subList(fromIndex: Int, toIndex: Int): List = list.subList(fromIndex, toIndex) -} - -inline class InlineMutableList(private val mlist: MutableList) : MutableList { - override val size: Int get() = mlist.size - override fun contains(element: T): Boolean = mlist.contains(element) - override fun containsAll(elements: Collection): Boolean = mlist.containsAll(elements) - override fun get(index: Int): T = mlist[index] - override fun indexOf(element: T): Int = mlist.indexOf(element) - override fun isEmpty(): Boolean = mlist.isEmpty() - override fun iterator(): MutableIterator = mlist.iterator() - override fun lastIndexOf(element: T): Int = mlist.lastIndexOf(element) - override fun add(element: T): Boolean = mlist.add(element) - override fun add(index: Int, element: T) { mlist.add(index, element) } - override fun addAll(index: Int, elements: Collection): Boolean = mlist.addAll(index, elements) - override fun addAll(elements: Collection): Boolean = mlist.addAll(elements) - override fun clear() { mlist.clear() } - override fun listIterator(): MutableListIterator = mlist.listIterator() - override fun listIterator(index: Int): MutableListIterator = mlist.listIterator(index) - override fun remove(element: T): Boolean = mlist.remove(element) - override fun removeAll(elements: Collection): Boolean = mlist.removeAll(elements) - override fun removeAt(index: Int): T = mlist.removeAt(index) - override fun retainAll(elements: Collection): Boolean = mlist.retainAll(elements) - override fun set(index: Int, element: T): T = mlist.set(index, element) - override fun subList(fromIndex: Int, toIndex: Int): MutableList = mlist.subList(fromIndex, toIndex) -} - -inline class InlineSet(private val s: Set) : Set { - override val size: Int get() = s.size - override fun contains(element: T): Boolean = s.contains(element) - override fun containsAll(elements: Collection): Boolean = s.containsAll(elements) - override fun isEmpty(): Boolean = s.isEmpty() - override fun iterator(): Iterator = s.iterator() -} - -inline class InlineMutableSet(private val ms: MutableSet) : MutableSet { - override val size: Int get() = ms.size - override fun contains(element: T): Boolean = ms.contains(element) - override fun containsAll(elements: Collection): Boolean = ms.containsAll(elements) - override fun isEmpty(): Boolean = ms.isEmpty() - override fun add(element: T): Boolean = ms.add(element) - override fun addAll(elements: Collection): Boolean = ms.addAll(elements) - override fun clear() { ms.clear() } - override fun iterator(): MutableIterator = ms.iterator() - override fun remove(element: T): Boolean = ms.remove(element) - override fun removeAll(elements: Collection): Boolean = ms.removeAll(elements) - override fun retainAll(elements: Collection): Boolean = ms.retainAll(elements) -} - -inline class InlineMap(private val map: Map) : Map { - override val entries: Set> get() = map.entries - override val keys: Set get() = map.keys - override val size: Int get() = map.size - override val values: Collection get() = map.values - override fun containsKey(key: K): Boolean = map.containsKey(key) - override fun containsValue(value: V): Boolean = map.containsValue(value) - override fun get(key: K): V? = map[key] - override fun isEmpty(): Boolean = map.isEmpty() -} - -inline class InlineMutableMap(private val mmap: MutableMap) : MutableMap { - override val size: Int get() = mmap.size - override fun containsKey(key: K): Boolean = mmap.containsKey(key) - override fun containsValue(value: V): Boolean = mmap.containsValue(value) - override fun get(key: K): V? = mmap[key] - override fun isEmpty(): Boolean = mmap.isEmpty() - override val entries: MutableSet> get() = mmap.entries - override val keys: MutableSet get() = mmap.keys - override val values: MutableCollection get() = mmap.values - override fun clear() { mmap.clear() } - override fun put(key: K, value: V): V? = mmap.put(key, value) - override fun putAll(from: Map) { mmap.putAll(from) } - override fun remove(key: K): V? = mmap.remove(key) -} - -inline class InlineMapEntry(private val e: Map.Entry) : Map.Entry { - override val key: K get() = e.key - override val value: V get() = e.value -} - -inline class InlineMutableMapEntry(private val e: MutableMap.MutableEntry) : MutableMap.MutableEntry { - override val key: K get() = e.key - override val value: V get() = e.value - override fun setValue(newValue: V): V = e.setValue(newValue) -} \ No newline at end of file diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineClassImplementingCollection.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineClassImplementingCollection.txt deleted file mode 100644 index fc5f14899c2..00000000000 --- a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineClassImplementingCollection.txt +++ /dev/null @@ -1,484 +0,0 @@ -@kotlin.Metadata -public final class InlineCollection { - // source: 'inlineClassImplementingCollection.kt' - private final field c: java.util.Collection - private synthetic method (p0: java.util.Collection): void - public method add(p0: java.lang.Object): boolean - public method addAll(p0: java.util.Collection): boolean - public synthetic final static method box-impl(p0: java.util.Collection): InlineCollection - public method clear(): void - public static @org.jetbrains.annotations.NotNull method constructor-impl(@org.jetbrains.annotations.NotNull p0: java.util.Collection): java.util.Collection - public method contains(p0: java.lang.Object): boolean - public static method contains-impl(p0: java.util.Collection, p1: java.lang.Object): boolean - public method containsAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean - public static method containsAll-impl(p0: java.util.Collection, @org.jetbrains.annotations.NotNull 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 @org.jetbrains.annotations.NotNull method iterator(): java.util.Iterator - public static @org.jetbrains.annotations.NotNull method iterator-impl(p0: java.util.Collection): 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 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 -} - -@kotlin.Metadata -public final class InlineIterable { - // source: 'inlineClassImplementingCollection.kt' - private final field it: java.lang.Iterable - private synthetic method (p0: java.lang.Iterable): void - public synthetic final static method box-impl(p0: java.lang.Iterable): InlineIterable - public static @org.jetbrains.annotations.NotNull method constructor-impl(@org.jetbrains.annotations.NotNull p0: java.lang.Iterable): java.lang.Iterable - public method equals(p0: java.lang.Object): boolean - public static method equals-impl(p0: java.lang.Iterable, p1: java.lang.Object): boolean - public final static method equals-impl0(p0: java.lang.Iterable, p1: java.lang.Iterable): boolean - public method hashCode(): int - public static method hashCode-impl(p0: java.lang.Iterable): int - public @org.jetbrains.annotations.NotNull method iterator(): java.util.Iterator - public static @org.jetbrains.annotations.NotNull method iterator-impl(p0: java.lang.Iterable): java.util.Iterator - public method toString(): java.lang.String - public static method toString-impl(p0: java.lang.Iterable): java.lang.String - public synthetic final method unbox-impl(): java.lang.Iterable -} - -@kotlin.Metadata -public final class InlineIterator { - // source: 'inlineClassImplementingCollection.kt' - private final field it: java.util.Iterator - private synthetic method (p0: java.util.Iterator): void - public synthetic final static method box-impl(p0: java.util.Iterator): InlineIterator - public static @org.jetbrains.annotations.NotNull method constructor-impl(@org.jetbrains.annotations.NotNull p0: java.util.Iterator): java.util.Iterator - public method equals(p0: java.lang.Object): boolean - public static method equals-impl(p0: java.util.Iterator, p1: java.lang.Object): boolean - public final static method equals-impl0(p0: java.util.Iterator, p1: java.util.Iterator): boolean - public method hasNext(): boolean - public static method hasNext-impl(p0: java.util.Iterator): boolean - public method hashCode(): int - public static method hashCode-impl(p0: java.util.Iterator): int - public method next(): java.lang.Object - public static method next-impl(p0: java.util.Iterator): java.lang.Object - public method remove(): void - public method toString(): java.lang.String - public static method toString-impl(p0: java.util.Iterator): java.lang.String - public synthetic final method unbox-impl(): java.util.Iterator -} - -@kotlin.Metadata -public final class InlineList { - // source: 'inlineClassImplementingCollection.kt' - private final field list: java.util.List - private synthetic method (p0: java.util.List): void - public method add(p0: int, p1: java.lang.Object): void - public method add(p0: java.lang.Object): boolean - public method addAll(p0: int, p1: java.util.Collection): boolean - public method addAll(p0: java.util.Collection): boolean - public synthetic final static method box-impl(p0: java.util.List): InlineList - public method clear(): void - public static @org.jetbrains.annotations.NotNull method constructor-impl(@org.jetbrains.annotations.NotNull p0: java.util.List): java.util.List - public method contains(p0: java.lang.Object): boolean - public static method contains-impl(p0: java.util.List, p1: java.lang.Object): boolean - public method containsAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean - public static method containsAll-impl(p0: java.util.List, @org.jetbrains.annotations.NotNull p1: java.util.Collection): boolean - public method equals(p0: java.lang.Object): boolean - public static method equals-impl(p0: java.util.List, p1: java.lang.Object): boolean - public final static method equals-impl0(p0: java.util.List, p1: java.util.List): boolean - public method get(p0: int): java.lang.Object - public static method get-impl(p0: java.util.List, p1: int): java.lang.Object - public method getSize(): int - public static method getSize-impl(p0: java.util.List): int - public method hashCode(): int - public static method hashCode-impl(p0: java.util.List): int - public method indexOf(p0: java.lang.Object): int - public static method indexOf-impl(p0: java.util.List, p1: java.lang.Object): int - public method isEmpty(): boolean - public static method isEmpty-impl(p0: java.util.List): boolean - public @org.jetbrains.annotations.NotNull method iterator(): java.util.Iterator - public static @org.jetbrains.annotations.NotNull method iterator-impl(p0: java.util.List): java.util.Iterator - public method lastIndexOf(p0: java.lang.Object): int - public static method lastIndexOf-impl(p0: java.util.List, p1: java.lang.Object): int - public @org.jetbrains.annotations.NotNull method listIterator(): java.util.ListIterator - public @org.jetbrains.annotations.NotNull method listIterator(p0: int): java.util.ListIterator - public static @org.jetbrains.annotations.NotNull method listIterator-impl(p0: java.util.List): java.util.ListIterator - public static @org.jetbrains.annotations.NotNull method listIterator-impl(p0: java.util.List, p1: int): java.util.ListIterator - public method remove(p0: int): java.lang.Object - 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 method set(p0: int, p1: java.lang.Object): java.lang.Object - public bridge final method size(): int - public @org.jetbrains.annotations.NotNull method subList(p0: int, p1: int): java.util.List - public static @org.jetbrains.annotations.NotNull method subList-impl(p0: java.util.List, p1: int, p2: int): java.util.List - 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.List): java.lang.String - public synthetic final method unbox-impl(): java.util.List -} - -@kotlin.Metadata -public final class InlineMap { - // source: 'inlineClassImplementingCollection.kt' - private final field map: java.util.Map - private synthetic method (p0: java.util.Map): void - public synthetic final static method box-impl(p0: java.util.Map): InlineMap - public method clear(): void - public static @org.jetbrains.annotations.NotNull method constructor-impl(@org.jetbrains.annotations.NotNull p0: java.util.Map): java.util.Map - public method containsKey(p0: java.lang.Object): boolean - public static method containsKey-impl(p0: java.util.Map, p1: java.lang.Object): boolean - public method containsValue(p0: java.lang.Object): boolean - public static method containsValue-impl(p0: java.util.Map, p1: java.lang.Object): boolean - public bridge final method entrySet(): java.util.Set - public method equals(p0: java.lang.Object): boolean - public static method equals-impl(p0: java.util.Map, p1: java.lang.Object): boolean - public final static method equals-impl0(p0: java.util.Map, p1: java.util.Map): boolean - public @org.jetbrains.annotations.Nullable method get(p0: java.lang.Object): java.lang.Object - public static @org.jetbrains.annotations.Nullable method get-impl(p0: java.util.Map, p1: java.lang.Object): java.lang.Object - public @org.jetbrains.annotations.NotNull method getEntries(): java.util.Set - public static @org.jetbrains.annotations.NotNull method getEntries-impl(p0: java.util.Map): java.util.Set - public @org.jetbrains.annotations.NotNull method getKeys(): java.util.Set - public static @org.jetbrains.annotations.NotNull method getKeys-impl(p0: java.util.Map): java.util.Set - public method getSize(): int - public static method getSize-impl(p0: java.util.Map): int - public @org.jetbrains.annotations.NotNull method getValues(): java.util.Collection - public static @org.jetbrains.annotations.NotNull method getValues-impl(p0: java.util.Map): java.util.Collection - public method hashCode(): int - public static method hashCode-impl(p0: java.util.Map): int - public method isEmpty(): boolean - public static method isEmpty-impl(p0: java.util.Map): boolean - public bridge final 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 method toString(): java.lang.String - public static method toString-impl(p0: java.util.Map): java.lang.String - public synthetic final method unbox-impl(): java.util.Map - public bridge final method values(): java.util.Collection -} - -@kotlin.Metadata -public final class InlineMapEntry { - // source: 'inlineClassImplementingCollection.kt' - private final field e: java.util.Map$Entry - private synthetic method (p0: java.util.Map$Entry): void - public synthetic final static method box-impl(p0: java.util.Map$Entry): InlineMapEntry - public static @org.jetbrains.annotations.NotNull method constructor-impl(@org.jetbrains.annotations.NotNull p0: java.util.Map$Entry): java.util.Map$Entry - public method equals(p0: java.lang.Object): boolean - public static method equals-impl(p0: java.util.Map$Entry, p1: java.lang.Object): boolean - public final static method equals-impl0(p0: java.util.Map$Entry, p1: java.util.Map$Entry): boolean - public method getKey(): java.lang.Object - public static method getKey-impl(p0: java.util.Map$Entry): java.lang.Object - public method getValue(): java.lang.Object - public static method getValue-impl(p0: java.util.Map$Entry): java.lang.Object - public method hashCode(): int - public static method hashCode-impl(p0: java.util.Map$Entry): int - public method setValue(p0: java.lang.Object): java.lang.Object - public method toString(): java.lang.String - public static method toString-impl(p0: java.util.Map$Entry): java.lang.String - public synthetic final method unbox-impl(): java.util.Map$Entry -} - -@kotlin.Metadata -public final class InlineMutableCollection { - // source: 'inlineClassImplementingCollection.kt' - private final field mc: java.util.Collection - private synthetic method (p0: java.util.Collection): void - public method add(p0: java.lang.Object): boolean - public static method add-impl(p0: java.util.Collection, p1: java.lang.Object): boolean - public method addAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean - public static method addAll-impl(p0: InlineMutableCollection, @org.jetbrains.annotations.NotNull 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 @org.jetbrains.annotations.NotNull method constructor-impl(@org.jetbrains.annotations.NotNull p0: java.util.Collection): java.util.Collection - public method contains(p0: java.lang.Object): boolean - public static method contains-impl(p0: java.util.Collection, p1: java.lang.Object): boolean - public method containsAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean - public static method containsAll-impl(p0: java.util.Collection, @org.jetbrains.annotations.NotNull 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 @org.jetbrains.annotations.NotNull method iterator(): java.util.Iterator - public static @org.jetbrains.annotations.NotNull method iterator-impl(p0: java.util.Collection): java.util.Iterator - public method remove(p0: java.lang.Object): boolean - public static method remove-impl(p0: java.util.Collection, p1: java.lang.Object): boolean - public method removeAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean - public static method removeAll-impl(p0: java.util.Collection, @org.jetbrains.annotations.NotNull p1: java.util.Collection): boolean - public method retainAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean - public static method retainAll-impl(p0: java.util.Collection, @org.jetbrains.annotations.NotNull 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.Collection): java.lang.String - public synthetic final method unbox-impl(): java.util.Collection -} - -@kotlin.Metadata -public final class InlineMutableIterable { - // source: 'inlineClassImplementingCollection.kt' - private final field it: java.lang.Iterable - private synthetic method (p0: java.lang.Iterable): void - public synthetic final static method box-impl(p0: java.lang.Iterable): InlineMutableIterable - public static @org.jetbrains.annotations.NotNull method constructor-impl(@org.jetbrains.annotations.NotNull p0: java.lang.Iterable): java.lang.Iterable - public method equals(p0: java.lang.Object): boolean - public static method equals-impl(p0: java.lang.Iterable, p1: java.lang.Object): boolean - public final static method equals-impl0(p0: java.lang.Iterable, p1: java.lang.Iterable): boolean - public method hashCode(): int - public static method hashCode-impl(p0: java.lang.Iterable): int - public @org.jetbrains.annotations.NotNull method iterator(): java.util.Iterator - public static @org.jetbrains.annotations.NotNull method iterator-impl(p0: java.lang.Iterable): java.util.Iterator - public method toString(): java.lang.String - public static method toString-impl(p0: java.lang.Iterable): java.lang.String - public synthetic final method unbox-impl(): java.lang.Iterable -} - -@kotlin.Metadata -public final class InlineMutableIterator { - // source: 'inlineClassImplementingCollection.kt' - private final field it: java.util.Iterator - private synthetic method (p0: java.util.Iterator): void - public synthetic final static method box-impl(p0: java.util.Iterator): InlineMutableIterator - public static @org.jetbrains.annotations.NotNull method constructor-impl(@org.jetbrains.annotations.NotNull p0: java.util.Iterator): java.util.Iterator - public method equals(p0: java.lang.Object): boolean - public static method equals-impl(p0: java.util.Iterator, p1: java.lang.Object): boolean - public final static method equals-impl0(p0: java.util.Iterator, p1: java.util.Iterator): boolean - public method hasNext(): boolean - public static method hasNext-impl(p0: java.util.Iterator): boolean - public method hashCode(): int - public static method hashCode-impl(p0: java.util.Iterator): int - public method next(): java.lang.Object - public static method next-impl(p0: java.util.Iterator): java.lang.Object - public method remove(): void - public static method remove-impl(p0: java.util.Iterator): void - public method toString(): java.lang.String - public static method toString-impl(p0: java.util.Iterator): java.lang.String - public synthetic final method unbox-impl(): java.util.Iterator -} - -@kotlin.Metadata -public final class InlineMutableList { - // source: 'inlineClassImplementingCollection.kt' - private final field mlist: java.util.List - private synthetic method (p0: java.util.List): void - public method add(p0: int, p1: java.lang.Object): void - public method add(p0: java.lang.Object): boolean - public static method add-impl(p0: java.util.List, p1: int, p2: java.lang.Object): void - public static method add-impl(p0: java.util.List, p1: java.lang.Object): boolean - public method addAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean - public method addAll(p0: int, @org.jetbrains.annotations.NotNull p1: java.util.Collection): boolean - public static method addAll-impl(p0: InlineMutableList, @org.jetbrains.annotations.NotNull p1: java.util.Collection): boolean - public static method addAll-impl(p0: InlineMutableList, p1: int, @org.jetbrains.annotations.NotNull p2: java.util.Collection): boolean - public synthetic final static method box-impl(p0: java.util.List): InlineMutableList - public method clear(): void - public static method clear-impl(p0: java.util.List): void - public static @org.jetbrains.annotations.NotNull method constructor-impl(@org.jetbrains.annotations.NotNull p0: java.util.List): java.util.List - public method contains(p0: java.lang.Object): boolean - public static method contains-impl(p0: java.util.List, p1: java.lang.Object): boolean - public method containsAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean - public static method containsAll-impl(p0: java.util.List, @org.jetbrains.annotations.NotNull p1: java.util.Collection): boolean - public method equals(p0: java.lang.Object): boolean - public static method equals-impl(p0: java.util.List, p1: java.lang.Object): boolean - public final static method equals-impl0(p0: java.util.List, p1: java.util.List): boolean - public method get(p0: int): java.lang.Object - public static method get-impl(p0: java.util.List, p1: int): java.lang.Object - public method getSize(): int - public static method getSize-impl(p0: java.util.List): int - public method hashCode(): int - public static method hashCode-impl(p0: java.util.List): int - public method indexOf(p0: java.lang.Object): int - public static method indexOf-impl(p0: java.util.List, p1: java.lang.Object): int - public method isEmpty(): boolean - public static method isEmpty-impl(p0: java.util.List): boolean - public @org.jetbrains.annotations.NotNull method iterator(): java.util.Iterator - public static @org.jetbrains.annotations.NotNull method iterator-impl(p0: java.util.List): java.util.Iterator - public method lastIndexOf(p0: java.lang.Object): int - public static method lastIndexOf-impl(p0: java.util.List, p1: java.lang.Object): int - public @org.jetbrains.annotations.NotNull method listIterator(): java.util.ListIterator - public @org.jetbrains.annotations.NotNull method listIterator(p0: int): java.util.ListIterator - public static @org.jetbrains.annotations.NotNull method listIterator-impl(p0: java.util.List): java.util.ListIterator - public static @org.jetbrains.annotations.NotNull method listIterator-impl(p0: java.util.List, p1: int): java.util.ListIterator - public bridge final method remove(p0: int): java.lang.Object - public method remove(p0: java.lang.Object): boolean - public static method remove-impl(p0: java.util.List, p1: java.lang.Object): boolean - public method removeAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean - public static method removeAll-impl(p0: java.util.List, @org.jetbrains.annotations.NotNull p1: java.util.Collection): boolean - public method removeAt(p0: int): java.lang.Object - public static method removeAt-impl(p0: java.util.List, p1: int): java.lang.Object - public method retainAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean - public static method retainAll-impl(p0: java.util.List, @org.jetbrains.annotations.NotNull p1: java.util.Collection): boolean - public method set(p0: int, p1: java.lang.Object): java.lang.Object - public static method set-impl(p0: java.util.List, p1: int, p2: java.lang.Object): java.lang.Object - public bridge final method size(): int - public @org.jetbrains.annotations.NotNull method subList(p0: int, p1: int): java.util.List - public static @org.jetbrains.annotations.NotNull method subList-impl(p0: java.util.List, p1: int, p2: int): java.util.List - 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.List): java.lang.String - public synthetic final method unbox-impl(): java.util.List -} - -@kotlin.Metadata -public final class InlineMutableMap { - // source: 'inlineClassImplementingCollection.kt' - private final field mmap: java.util.Map - private synthetic method (p0: java.util.Map): void - public synthetic final static method box-impl(p0: java.util.Map): InlineMutableMap - public method clear(): void - public static method clear-impl(p0: java.util.Map): void - public static @org.jetbrains.annotations.NotNull method constructor-impl(@org.jetbrains.annotations.NotNull p0: java.util.Map): java.util.Map - public method containsKey(p0: java.lang.Object): boolean - public static method containsKey-impl(p0: java.util.Map, p1: java.lang.Object): boolean - public method containsValue(p0: java.lang.Object): boolean - public static method containsValue-impl(p0: java.util.Map, p1: java.lang.Object): boolean - public bridge final method entrySet(): java.util.Set - public method equals(p0: java.lang.Object): boolean - public static method equals-impl(p0: java.util.Map, p1: java.lang.Object): boolean - public final static method equals-impl0(p0: java.util.Map, p1: java.util.Map): boolean - public @org.jetbrains.annotations.Nullable method get(p0: java.lang.Object): java.lang.Object - public static @org.jetbrains.annotations.Nullable method get-impl(p0: java.util.Map, p1: java.lang.Object): java.lang.Object - public @org.jetbrains.annotations.NotNull method getEntries(): java.util.Set - public static @org.jetbrains.annotations.NotNull method getEntries-impl(p0: java.util.Map): java.util.Set - public @org.jetbrains.annotations.NotNull method getKeys(): java.util.Set - public static @org.jetbrains.annotations.NotNull method getKeys-impl(p0: java.util.Map): java.util.Set - public method getSize(): int - public static method getSize-impl(p0: java.util.Map): int - public @org.jetbrains.annotations.NotNull method getValues(): java.util.Collection - public static @org.jetbrains.annotations.NotNull method getValues-impl(p0: java.util.Map): java.util.Collection - public method hashCode(): int - public static method hashCode-impl(p0: java.util.Map): int - public method isEmpty(): boolean - public static method isEmpty-impl(p0: java.util.Map): boolean - public bridge final method keySet(): java.util.Set - public @org.jetbrains.annotations.Nullable method put(p0: java.lang.Object, p1: java.lang.Object): java.lang.Object - public static @org.jetbrains.annotations.Nullable method put-impl(p0: java.util.Map, p1: java.lang.Object, p2: java.lang.Object): java.lang.Object - public method putAll(@org.jetbrains.annotations.NotNull p0: java.util.Map): void - public static method putAll-impl(p0: InlineMutableMap, @org.jetbrains.annotations.NotNull p1: java.util.Map): void - public @org.jetbrains.annotations.Nullable method remove(p0: java.lang.Object): java.lang.Object - public static @org.jetbrains.annotations.Nullable method remove-impl(p0: java.util.Map, p1: java.lang.Object): java.lang.Object - public bridge final method size(): int - public method toString(): java.lang.String - public static method toString-impl(p0: java.util.Map): java.lang.String - public synthetic final method unbox-impl(): java.util.Map - public bridge final method values(): java.util.Collection -} - -@kotlin.Metadata -public final class InlineMutableMapEntry { - // source: 'inlineClassImplementingCollection.kt' - private final field e: java.util.Map$Entry - private synthetic method (p0: java.util.Map$Entry): void - public synthetic final static method box-impl(p0: java.util.Map$Entry): InlineMutableMapEntry - public static @org.jetbrains.annotations.NotNull method constructor-impl(@org.jetbrains.annotations.NotNull p0: java.util.Map$Entry): java.util.Map$Entry - public method equals(p0: java.lang.Object): boolean - public static method equals-impl(p0: java.util.Map$Entry, p1: java.lang.Object): boolean - public final static method equals-impl0(p0: java.util.Map$Entry, p1: java.util.Map$Entry): boolean - public method getKey(): java.lang.Object - public static method getKey-impl(p0: java.util.Map$Entry): java.lang.Object - public method getValue(): java.lang.Object - public static method getValue-impl(p0: java.util.Map$Entry): java.lang.Object - public method hashCode(): int - public static method hashCode-impl(p0: java.util.Map$Entry): int - public method setValue(p0: java.lang.Object): java.lang.Object - public static method setValue-impl(p0: java.util.Map$Entry, p1: java.lang.Object): java.lang.Object - public method toString(): java.lang.String - public static method toString-impl(p0: java.util.Map$Entry): java.lang.String - public synthetic final method unbox-impl(): java.util.Map$Entry -} - -@kotlin.Metadata -public final class InlineMutableSet { - // source: 'inlineClassImplementingCollection.kt' - private final field ms: java.util.Set - private synthetic method (p0: java.util.Set): void - public method add(p0: java.lang.Object): boolean - public static method add-impl(p0: java.util.Set, p1: java.lang.Object): boolean - public method addAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean - public static method addAll-impl(p0: InlineMutableSet, @org.jetbrains.annotations.NotNull 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 @org.jetbrains.annotations.NotNull method constructor-impl(@org.jetbrains.annotations.NotNull p0: java.util.Set): java.util.Set - public method contains(p0: java.lang.Object): boolean - public static method contains-impl(p0: java.util.Set, p1: java.lang.Object): boolean - public method containsAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean - public static method containsAll-impl(p0: java.util.Set, @org.jetbrains.annotations.NotNull 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 @org.jetbrains.annotations.NotNull method iterator(): java.util.Iterator - public static @org.jetbrains.annotations.NotNull method iterator-impl(p0: java.util.Set): java.util.Iterator - public method remove(p0: java.lang.Object): boolean - public static method remove-impl(p0: java.util.Set, p1: java.lang.Object): boolean - public method removeAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean - public static method removeAll-impl(p0: java.util.Set, @org.jetbrains.annotations.NotNull p1: java.util.Collection): boolean - public method retainAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean - public static method retainAll-impl(p0: java.util.Set, @org.jetbrains.annotations.NotNull 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 -} - -@kotlin.Metadata -public final class InlineSet { - // source: 'inlineClassImplementingCollection.kt' - private final field s: java.util.Set - private synthetic method (p0: java.util.Set): void - public method add(p0: java.lang.Object): boolean - public method addAll(p0: java.util.Collection): boolean - public synthetic final static method box-impl(p0: java.util.Set): InlineSet - public method clear(): void - public static @org.jetbrains.annotations.NotNull method constructor-impl(@org.jetbrains.annotations.NotNull p0: java.util.Set): java.util.Set - public method contains(p0: java.lang.Object): boolean - public static method contains-impl(p0: java.util.Set, p1: java.lang.Object): boolean - public method containsAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean - public static method containsAll-impl(p0: java.util.Set, @org.jetbrains.annotations.NotNull 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 @org.jetbrains.annotations.NotNull method iterator(): java.util.Iterator - public static @org.jetbrains.annotations.NotNull method iterator-impl(p0: java.util.Set): 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 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 -} diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineClassImplementingCollection_ir.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineClassImplementingCollection_ir.txt deleted file mode 100644 index 4c177bdd353..00000000000 --- a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineClassImplementingCollection_ir.txt +++ /dev/null @@ -1,484 +0,0 @@ -@kotlin.Metadata -public final class InlineCollection { - // source: 'inlineClassImplementingCollection.kt' - private final @org.jetbrains.annotations.NotNull field c: java.util.Collection - private synthetic method (p0: java.util.Collection): void - public method add(p0: java.lang.Object): boolean - public method addAll(p0: java.util.Collection): boolean - public synthetic final static method box-impl(p0: java.util.Collection): InlineCollection - public method clear(): void - public static @org.jetbrains.annotations.NotNull method constructor-impl(@org.jetbrains.annotations.NotNull p0: java.util.Collection): java.util.Collection - public method contains(p0: java.lang.Object): boolean - public static method contains-impl(@org.jetbrains.annotations.NotNull p0: java.util.Collection, p1: java.lang.Object): boolean - public method containsAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean - public static method containsAll-impl(@org.jetbrains.annotations.NotNull p0: java.util.Collection, @org.jetbrains.annotations.NotNull 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(@org.jetbrains.annotations.NotNull 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(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean - public @org.jetbrains.annotations.NotNull method iterator(): java.util.Iterator - public static @org.jetbrains.annotations.NotNull method iterator-impl(@org.jetbrains.annotations.NotNull p0: java.util.Collection): 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 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 -} - -@kotlin.Metadata -public final class InlineIterable { - // source: 'inlineClassImplementingCollection.kt' - private final @org.jetbrains.annotations.NotNull field it: java.lang.Iterable - private synthetic method (p0: java.lang.Iterable): void - public synthetic final static method box-impl(p0: java.lang.Iterable): InlineIterable - public static @org.jetbrains.annotations.NotNull method constructor-impl(@org.jetbrains.annotations.NotNull p0: java.lang.Iterable): java.lang.Iterable - public method equals(p0: java.lang.Object): boolean - public static method equals-impl(p0: java.lang.Iterable, p1: java.lang.Object): boolean - public final static method equals-impl0(p0: java.lang.Iterable, p1: java.lang.Iterable): boolean - public method hashCode(): int - public static method hashCode-impl(p0: java.lang.Iterable): int - public @org.jetbrains.annotations.NotNull method iterator(): java.util.Iterator - public static @org.jetbrains.annotations.NotNull method iterator-impl(@org.jetbrains.annotations.NotNull p0: java.lang.Iterable): java.util.Iterator - public method toString(): java.lang.String - public static method toString-impl(p0: java.lang.Iterable): java.lang.String - public synthetic final method unbox-impl(): java.lang.Iterable -} - -@kotlin.Metadata -public final class InlineIterator { - // source: 'inlineClassImplementingCollection.kt' - private final @org.jetbrains.annotations.NotNull field it: java.util.Iterator - private synthetic method (p0: java.util.Iterator): void - public synthetic final static method box-impl(p0: java.util.Iterator): InlineIterator - public static @org.jetbrains.annotations.NotNull method constructor-impl(@org.jetbrains.annotations.NotNull p0: java.util.Iterator): java.util.Iterator - public method equals(p0: java.lang.Object): boolean - public static method equals-impl(p0: java.util.Iterator, p1: java.lang.Object): boolean - public final static method equals-impl0(p0: java.util.Iterator, p1: java.util.Iterator): boolean - public method hasNext(): boolean - public static method hasNext-impl(@org.jetbrains.annotations.NotNull p0: java.util.Iterator): boolean - public method hashCode(): int - public static method hashCode-impl(p0: java.util.Iterator): int - public method next(): java.lang.Object - public static method next-impl(@org.jetbrains.annotations.NotNull p0: java.util.Iterator): java.lang.Object - public method remove(): void - public method toString(): java.lang.String - public static method toString-impl(p0: java.util.Iterator): java.lang.String - public synthetic final method unbox-impl(): java.util.Iterator -} - -@kotlin.Metadata -public final class InlineList { - // source: 'inlineClassImplementingCollection.kt' - private final @org.jetbrains.annotations.NotNull field list: java.util.List - private synthetic method (p0: java.util.List): void - public method add(p0: int, p1: java.lang.Object): void - public method add(p0: java.lang.Object): boolean - public method addAll(p0: int, p1: java.util.Collection): boolean - public method addAll(p0: java.util.Collection): boolean - public synthetic final static method box-impl(p0: java.util.List): InlineList - public method clear(): void - public static @org.jetbrains.annotations.NotNull method constructor-impl(@org.jetbrains.annotations.NotNull p0: java.util.List): java.util.List - public method contains(p0: java.lang.Object): boolean - public static method contains-impl(@org.jetbrains.annotations.NotNull p0: java.util.List, p1: java.lang.Object): boolean - public method containsAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean - public static method containsAll-impl(@org.jetbrains.annotations.NotNull p0: java.util.List, @org.jetbrains.annotations.NotNull p1: java.util.Collection): boolean - public method equals(p0: java.lang.Object): boolean - public static method equals-impl(p0: java.util.List, p1: java.lang.Object): boolean - public final static method equals-impl0(p0: java.util.List, p1: java.util.List): boolean - public method get(p0: int): java.lang.Object - public static method get-impl(@org.jetbrains.annotations.NotNull p0: java.util.List, p1: int): java.lang.Object - public method getSize(): int - public static method getSize-impl(@org.jetbrains.annotations.NotNull p0: java.util.List): int - public method hashCode(): int - public static method hashCode-impl(p0: java.util.List): int - public method indexOf(p0: java.lang.Object): int - public static method indexOf-impl(@org.jetbrains.annotations.NotNull p0: java.util.List, p1: java.lang.Object): int - public method isEmpty(): boolean - public static method isEmpty-impl(@org.jetbrains.annotations.NotNull p0: java.util.List): boolean - public @org.jetbrains.annotations.NotNull method iterator(): java.util.Iterator - public static @org.jetbrains.annotations.NotNull method iterator-impl(@org.jetbrains.annotations.NotNull p0: java.util.List): java.util.Iterator - public method lastIndexOf(p0: java.lang.Object): int - public static method lastIndexOf-impl(@org.jetbrains.annotations.NotNull p0: java.util.List, p1: java.lang.Object): int - public @org.jetbrains.annotations.NotNull method listIterator(): java.util.ListIterator - public @org.jetbrains.annotations.NotNull method listIterator(p0: int): java.util.ListIterator - public static @org.jetbrains.annotations.NotNull method listIterator-impl(@org.jetbrains.annotations.NotNull p0: java.util.List): java.util.ListIterator - public static @org.jetbrains.annotations.NotNull method listIterator-impl(@org.jetbrains.annotations.NotNull p0: java.util.List, p1: int): java.util.ListIterator - public method remove(p0: int): java.lang.Object - 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 method set(p0: int, p1: java.lang.Object): java.lang.Object - public synthetic bridge method size(): int - public @org.jetbrains.annotations.NotNull method subList(p0: int, p1: int): java.util.List - public static @org.jetbrains.annotations.NotNull method subList-impl(@org.jetbrains.annotations.NotNull p0: java.util.List, p1: int, p2: int): java.util.List - 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.List): java.lang.String - public synthetic final method unbox-impl(): java.util.List -} - -@kotlin.Metadata -public final class InlineMap { - // source: 'inlineClassImplementingCollection.kt' - private final @org.jetbrains.annotations.NotNull field map: java.util.Map - private synthetic method (p0: java.util.Map): void - public synthetic final static method box-impl(p0: java.util.Map): InlineMap - public method clear(): void - public static @org.jetbrains.annotations.NotNull method constructor-impl(@org.jetbrains.annotations.NotNull p0: java.util.Map): java.util.Map - public method containsKey(p0: java.lang.Object): boolean - public static method containsKey-impl(@org.jetbrains.annotations.NotNull p0: java.util.Map, p1: java.lang.Object): boolean - public method containsValue(p0: java.lang.Object): boolean - public static method containsValue-impl(@org.jetbrains.annotations.NotNull p0: java.util.Map, p1: java.lang.Object): boolean - public synthetic bridge method entrySet(): java.util.Set - public method equals(p0: java.lang.Object): boolean - public static method equals-impl(p0: java.util.Map, p1: java.lang.Object): boolean - public final static method equals-impl0(p0: java.util.Map, p1: java.util.Map): boolean - public @org.jetbrains.annotations.Nullable method get(p0: java.lang.Object): java.lang.Object - public static @org.jetbrains.annotations.Nullable method get-impl(@org.jetbrains.annotations.NotNull p0: java.util.Map, p1: java.lang.Object): java.lang.Object - public @org.jetbrains.annotations.NotNull method getEntries(): java.util.Set - public static @org.jetbrains.annotations.NotNull method getEntries-impl(@org.jetbrains.annotations.NotNull p0: java.util.Map): java.util.Set - public @org.jetbrains.annotations.NotNull method getKeys(): java.util.Set - public static @org.jetbrains.annotations.NotNull method getKeys-impl(@org.jetbrains.annotations.NotNull p0: java.util.Map): java.util.Set - public method getSize(): int - public static method getSize-impl(@org.jetbrains.annotations.NotNull p0: java.util.Map): int - public @org.jetbrains.annotations.NotNull method getValues(): java.util.Collection - public static @org.jetbrains.annotations.NotNull method getValues-impl(@org.jetbrains.annotations.NotNull p0: java.util.Map): java.util.Collection - public method hashCode(): int - public static method hashCode-impl(p0: java.util.Map): int - public method isEmpty(): boolean - public static method isEmpty-impl(@org.jetbrains.annotations.NotNull p0: java.util.Map): boolean - 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 synthetic bridge method size(): int - public method toString(): java.lang.String - public static method toString-impl(p0: java.util.Map): java.lang.String - public synthetic final method unbox-impl(): java.util.Map - public synthetic bridge method values(): java.util.Collection -} - -@kotlin.Metadata -public final class InlineMapEntry { - // source: 'inlineClassImplementingCollection.kt' - private final @org.jetbrains.annotations.NotNull field e: java.util.Map$Entry - private synthetic method (p0: java.util.Map$Entry): void - public synthetic final static method box-impl(p0: java.util.Map$Entry): InlineMapEntry - public static @org.jetbrains.annotations.NotNull method constructor-impl(@org.jetbrains.annotations.NotNull p0: java.util.Map$Entry): java.util.Map$Entry - public method equals(p0: java.lang.Object): boolean - public static method equals-impl(p0: java.util.Map$Entry, p1: java.lang.Object): boolean - public final static method equals-impl0(p0: java.util.Map$Entry, p1: java.util.Map$Entry): boolean - public method getKey(): java.lang.Object - public static method getKey-impl(@org.jetbrains.annotations.NotNull p0: java.util.Map$Entry): java.lang.Object - public method getValue(): java.lang.Object - public static method getValue-impl(@org.jetbrains.annotations.NotNull p0: java.util.Map$Entry): java.lang.Object - public method hashCode(): int - public static method hashCode-impl(p0: java.util.Map$Entry): int - public method setValue(p0: java.lang.Object): java.lang.Object - public method toString(): java.lang.String - public static method toString-impl(p0: java.util.Map$Entry): java.lang.String - public synthetic final method unbox-impl(): java.util.Map$Entry -} - -@kotlin.Metadata -public final class InlineMutableCollection { - // source: 'inlineClassImplementingCollection.kt' - private final @org.jetbrains.annotations.NotNull field mc: java.util.Collection - private synthetic method (p0: java.util.Collection): void - public method add(p0: java.lang.Object): boolean - public static method add-impl(@org.jetbrains.annotations.NotNull p0: java.util.Collection, p1: java.lang.Object): boolean - public method addAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean - public static method addAll-impl(@org.jetbrains.annotations.NotNull p0: InlineMutableCollection, @org.jetbrains.annotations.NotNull 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(@org.jetbrains.annotations.NotNull p0: java.util.Collection): void - public static @org.jetbrains.annotations.NotNull method constructor-impl(@org.jetbrains.annotations.NotNull p0: java.util.Collection): java.util.Collection - public method contains(p0: java.lang.Object): boolean - public static method contains-impl(@org.jetbrains.annotations.NotNull p0: java.util.Collection, p1: java.lang.Object): boolean - public method containsAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean - public static method containsAll-impl(@org.jetbrains.annotations.NotNull p0: java.util.Collection, @org.jetbrains.annotations.NotNull 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(@org.jetbrains.annotations.NotNull 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(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean - public @org.jetbrains.annotations.NotNull method iterator(): java.util.Iterator - public static @org.jetbrains.annotations.NotNull method iterator-impl(@org.jetbrains.annotations.NotNull p0: java.util.Collection): java.util.Iterator - public method remove(p0: java.lang.Object): boolean - public static method remove-impl(@org.jetbrains.annotations.NotNull p0: java.util.Collection, p1: java.lang.Object): boolean - public method removeAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean - public static method removeAll-impl(@org.jetbrains.annotations.NotNull p0: java.util.Collection, @org.jetbrains.annotations.NotNull p1: java.util.Collection): boolean - public method retainAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean - public static method retainAll-impl(@org.jetbrains.annotations.NotNull p0: java.util.Collection, @org.jetbrains.annotations.NotNull 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 -} - -@kotlin.Metadata -public final class InlineMutableIterable { - // source: 'inlineClassImplementingCollection.kt' - private final @org.jetbrains.annotations.NotNull field it: java.lang.Iterable - private synthetic method (p0: java.lang.Iterable): void - public synthetic final static method box-impl(p0: java.lang.Iterable): InlineMutableIterable - public static @org.jetbrains.annotations.NotNull method constructor-impl(@org.jetbrains.annotations.NotNull p0: java.lang.Iterable): java.lang.Iterable - public method equals(p0: java.lang.Object): boolean - public static method equals-impl(p0: java.lang.Iterable, p1: java.lang.Object): boolean - public final static method equals-impl0(p0: java.lang.Iterable, p1: java.lang.Iterable): boolean - public method hashCode(): int - public static method hashCode-impl(p0: java.lang.Iterable): int - public @org.jetbrains.annotations.NotNull method iterator(): java.util.Iterator - public static @org.jetbrains.annotations.NotNull method iterator-impl(@org.jetbrains.annotations.NotNull p0: java.lang.Iterable): java.util.Iterator - public method toString(): java.lang.String - public static method toString-impl(p0: java.lang.Iterable): java.lang.String - public synthetic final method unbox-impl(): java.lang.Iterable -} - -@kotlin.Metadata -public final class InlineMutableIterator { - // source: 'inlineClassImplementingCollection.kt' - private final @org.jetbrains.annotations.NotNull field it: java.util.Iterator - private synthetic method (p0: java.util.Iterator): void - public synthetic final static method box-impl(p0: java.util.Iterator): InlineMutableIterator - public static @org.jetbrains.annotations.NotNull method constructor-impl(@org.jetbrains.annotations.NotNull p0: java.util.Iterator): java.util.Iterator - public method equals(p0: java.lang.Object): boolean - public static method equals-impl(p0: java.util.Iterator, p1: java.lang.Object): boolean - public final static method equals-impl0(p0: java.util.Iterator, p1: java.util.Iterator): boolean - public method hasNext(): boolean - public static method hasNext-impl(@org.jetbrains.annotations.NotNull p0: java.util.Iterator): boolean - public method hashCode(): int - public static method hashCode-impl(p0: java.util.Iterator): int - public method next(): java.lang.Object - public static method next-impl(@org.jetbrains.annotations.NotNull p0: java.util.Iterator): java.lang.Object - public method remove(): void - public static method remove-impl(@org.jetbrains.annotations.NotNull p0: java.util.Iterator): void - public method toString(): java.lang.String - public static method toString-impl(p0: java.util.Iterator): java.lang.String - public synthetic final method unbox-impl(): java.util.Iterator -} - -@kotlin.Metadata -public final class InlineMutableList { - // source: 'inlineClassImplementingCollection.kt' - private final @org.jetbrains.annotations.NotNull field mlist: java.util.List - private synthetic method (p0: java.util.List): void - public method add(p0: int, p1: java.lang.Object): void - public method add(p0: java.lang.Object): boolean - public static method add-impl(@org.jetbrains.annotations.NotNull p0: java.util.List, p1: int, p2: java.lang.Object): void - public static method add-impl(@org.jetbrains.annotations.NotNull p0: java.util.List, p1: java.lang.Object): boolean - public method addAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean - public method addAll(p0: int, @org.jetbrains.annotations.NotNull p1: java.util.Collection): boolean - public static method addAll-impl(@org.jetbrains.annotations.NotNull p0: InlineMutableList, @org.jetbrains.annotations.NotNull p1: java.util.Collection): boolean - public static method addAll-impl(@org.jetbrains.annotations.NotNull p0: InlineMutableList, p1: int, @org.jetbrains.annotations.NotNull p2: java.util.Collection): boolean - public synthetic final static method box-impl(p0: java.util.List): InlineMutableList - public method clear(): void - public static method clear-impl(@org.jetbrains.annotations.NotNull p0: java.util.List): void - public static @org.jetbrains.annotations.NotNull method constructor-impl(@org.jetbrains.annotations.NotNull p0: java.util.List): java.util.List - public method contains(p0: java.lang.Object): boolean - public static method contains-impl(@org.jetbrains.annotations.NotNull p0: java.util.List, p1: java.lang.Object): boolean - public method containsAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean - public static method containsAll-impl(@org.jetbrains.annotations.NotNull p0: java.util.List, @org.jetbrains.annotations.NotNull p1: java.util.Collection): boolean - public method equals(p0: java.lang.Object): boolean - public static method equals-impl(p0: java.util.List, p1: java.lang.Object): boolean - public final static method equals-impl0(p0: java.util.List, p1: java.util.List): boolean - public method get(p0: int): java.lang.Object - public static method get-impl(@org.jetbrains.annotations.NotNull p0: java.util.List, p1: int): java.lang.Object - public method getSize(): int - public static method getSize-impl(@org.jetbrains.annotations.NotNull p0: java.util.List): int - public method hashCode(): int - public static method hashCode-impl(p0: java.util.List): int - public method indexOf(p0: java.lang.Object): int - public static method indexOf-impl(@org.jetbrains.annotations.NotNull p0: java.util.List, p1: java.lang.Object): int - public method isEmpty(): boolean - public static method isEmpty-impl(@org.jetbrains.annotations.NotNull p0: java.util.List): boolean - public @org.jetbrains.annotations.NotNull method iterator(): java.util.Iterator - public static @org.jetbrains.annotations.NotNull method iterator-impl(@org.jetbrains.annotations.NotNull p0: java.util.List): java.util.Iterator - public method lastIndexOf(p0: java.lang.Object): int - public static method lastIndexOf-impl(@org.jetbrains.annotations.NotNull p0: java.util.List, p1: java.lang.Object): int - public @org.jetbrains.annotations.NotNull method listIterator(): java.util.ListIterator - public @org.jetbrains.annotations.NotNull method listIterator(p0: int): java.util.ListIterator - public static @org.jetbrains.annotations.NotNull method listIterator-impl(@org.jetbrains.annotations.NotNull p0: java.util.List): java.util.ListIterator - public static @org.jetbrains.annotations.NotNull method listIterator-impl(@org.jetbrains.annotations.NotNull p0: java.util.List, p1: int): java.util.ListIterator - public bridge final method remove(p0: int): java.lang.Object - public method remove(p0: java.lang.Object): boolean - public static method remove-impl(@org.jetbrains.annotations.NotNull p0: java.util.List, p1: java.lang.Object): boolean - public method removeAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean - public static method removeAll-impl(@org.jetbrains.annotations.NotNull p0: java.util.List, @org.jetbrains.annotations.NotNull p1: java.util.Collection): boolean - public method removeAt(p0: int): java.lang.Object - public static method removeAt-impl(@org.jetbrains.annotations.NotNull p0: java.util.List, p1: int): java.lang.Object - public method retainAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean - public static method retainAll-impl(@org.jetbrains.annotations.NotNull p0: java.util.List, @org.jetbrains.annotations.NotNull p1: java.util.Collection): boolean - public method set(p0: int, p1: java.lang.Object): java.lang.Object - public static method set-impl(@org.jetbrains.annotations.NotNull p0: java.util.List, p1: int, p2: java.lang.Object): java.lang.Object - public synthetic bridge method size(): int - public @org.jetbrains.annotations.NotNull method subList(p0: int, p1: int): java.util.List - public static @org.jetbrains.annotations.NotNull method subList-impl(@org.jetbrains.annotations.NotNull p0: java.util.List, p1: int, p2: int): java.util.List - 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.List): java.lang.String - public synthetic final method unbox-impl(): java.util.List -} - -@kotlin.Metadata -public final class InlineMutableMap { - // source: 'inlineClassImplementingCollection.kt' - private final @org.jetbrains.annotations.NotNull field mmap: java.util.Map - private synthetic method (p0: java.util.Map): void - public synthetic final static method box-impl(p0: java.util.Map): InlineMutableMap - public method clear(): void - public static method clear-impl(@org.jetbrains.annotations.NotNull p0: java.util.Map): void - public static @org.jetbrains.annotations.NotNull method constructor-impl(@org.jetbrains.annotations.NotNull p0: java.util.Map): java.util.Map - public method containsKey(p0: java.lang.Object): boolean - public static method containsKey-impl(@org.jetbrains.annotations.NotNull p0: java.util.Map, p1: java.lang.Object): boolean - public method containsValue(p0: java.lang.Object): boolean - public static method containsValue-impl(@org.jetbrains.annotations.NotNull p0: java.util.Map, p1: java.lang.Object): boolean - public synthetic bridge method entrySet(): java.util.Set - public method equals(p0: java.lang.Object): boolean - public static method equals-impl(p0: java.util.Map, p1: java.lang.Object): boolean - public final static method equals-impl0(p0: java.util.Map, p1: java.util.Map): boolean - public @org.jetbrains.annotations.Nullable method get(p0: java.lang.Object): java.lang.Object - public static @org.jetbrains.annotations.Nullable method get-impl(@org.jetbrains.annotations.NotNull p0: java.util.Map, p1: java.lang.Object): java.lang.Object - public @org.jetbrains.annotations.NotNull method getEntries(): java.util.Set - public static @org.jetbrains.annotations.NotNull method getEntries-impl(@org.jetbrains.annotations.NotNull p0: java.util.Map): java.util.Set - public @org.jetbrains.annotations.NotNull method getKeys(): java.util.Set - public static @org.jetbrains.annotations.NotNull method getKeys-impl(@org.jetbrains.annotations.NotNull p0: java.util.Map): java.util.Set - public method getSize(): int - public static method getSize-impl(@org.jetbrains.annotations.NotNull p0: java.util.Map): int - public @org.jetbrains.annotations.NotNull method getValues(): java.util.Collection - public static @org.jetbrains.annotations.NotNull method getValues-impl(@org.jetbrains.annotations.NotNull p0: java.util.Map): java.util.Collection - public method hashCode(): int - public static method hashCode-impl(p0: java.util.Map): int - public method isEmpty(): boolean - public static method isEmpty-impl(@org.jetbrains.annotations.NotNull p0: java.util.Map): boolean - public synthetic bridge method keySet(): java.util.Set - public @org.jetbrains.annotations.Nullable method put(p0: java.lang.Object, p1: java.lang.Object): java.lang.Object - public static @org.jetbrains.annotations.Nullable method put-impl(@org.jetbrains.annotations.NotNull p0: java.util.Map, p1: java.lang.Object, p2: java.lang.Object): java.lang.Object - public method putAll(@org.jetbrains.annotations.NotNull p0: java.util.Map): void - public static method putAll-impl(@org.jetbrains.annotations.NotNull p0: InlineMutableMap, @org.jetbrains.annotations.NotNull p1: java.util.Map): void - public @org.jetbrains.annotations.Nullable method remove(p0: java.lang.Object): java.lang.Object - public static @org.jetbrains.annotations.Nullable method remove-impl(@org.jetbrains.annotations.NotNull p0: java.util.Map, p1: java.lang.Object): java.lang.Object - public synthetic bridge method size(): int - public method toString(): java.lang.String - public static method toString-impl(p0: java.util.Map): java.lang.String - public synthetic final method unbox-impl(): java.util.Map - public synthetic bridge method values(): java.util.Collection -} - -@kotlin.Metadata -public final class InlineMutableMapEntry { - // source: 'inlineClassImplementingCollection.kt' - private final @org.jetbrains.annotations.NotNull field e: java.util.Map$Entry - private synthetic method (p0: java.util.Map$Entry): void - public synthetic final static method box-impl(p0: java.util.Map$Entry): InlineMutableMapEntry - public static @org.jetbrains.annotations.NotNull method constructor-impl(@org.jetbrains.annotations.NotNull p0: java.util.Map$Entry): java.util.Map$Entry - public method equals(p0: java.lang.Object): boolean - public static method equals-impl(p0: java.util.Map$Entry, p1: java.lang.Object): boolean - public final static method equals-impl0(p0: java.util.Map$Entry, p1: java.util.Map$Entry): boolean - public method getKey(): java.lang.Object - public static method getKey-impl(@org.jetbrains.annotations.NotNull p0: java.util.Map$Entry): java.lang.Object - public method getValue(): java.lang.Object - public static method getValue-impl(@org.jetbrains.annotations.NotNull p0: java.util.Map$Entry): java.lang.Object - public method hashCode(): int - public static method hashCode-impl(p0: java.util.Map$Entry): int - public method setValue(p0: java.lang.Object): java.lang.Object - public static method setValue-impl(@org.jetbrains.annotations.NotNull p0: java.util.Map$Entry, p1: java.lang.Object): java.lang.Object - public method toString(): java.lang.String - public static method toString-impl(p0: java.util.Map$Entry): java.lang.String - public synthetic final method unbox-impl(): java.util.Map$Entry -} - -@kotlin.Metadata -public final class InlineMutableSet { - // source: 'inlineClassImplementingCollection.kt' - private final @org.jetbrains.annotations.NotNull field ms: java.util.Set - private synthetic method (p0: java.util.Set): void - public method add(p0: java.lang.Object): boolean - public static method add-impl(@org.jetbrains.annotations.NotNull p0: java.util.Set, p1: java.lang.Object): boolean - public method addAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean - public static method addAll-impl(@org.jetbrains.annotations.NotNull p0: InlineMutableSet, @org.jetbrains.annotations.NotNull 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(@org.jetbrains.annotations.NotNull p0: java.util.Set): void - public static @org.jetbrains.annotations.NotNull method constructor-impl(@org.jetbrains.annotations.NotNull p0: java.util.Set): java.util.Set - public method contains(p0: java.lang.Object): boolean - public static method contains-impl(@org.jetbrains.annotations.NotNull p0: java.util.Set, p1: java.lang.Object): boolean - public method containsAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean - public static method containsAll-impl(@org.jetbrains.annotations.NotNull p0: java.util.Set, @org.jetbrains.annotations.NotNull 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(@org.jetbrains.annotations.NotNull 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(@org.jetbrains.annotations.NotNull p0: java.util.Set): boolean - public @org.jetbrains.annotations.NotNull method iterator(): java.util.Iterator - public static @org.jetbrains.annotations.NotNull method iterator-impl(@org.jetbrains.annotations.NotNull p0: java.util.Set): java.util.Iterator - public method remove(p0: java.lang.Object): boolean - public static method remove-impl(@org.jetbrains.annotations.NotNull p0: java.util.Set, p1: java.lang.Object): boolean - public method removeAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean - public static method removeAll-impl(@org.jetbrains.annotations.NotNull p0: java.util.Set, @org.jetbrains.annotations.NotNull p1: java.util.Collection): boolean - public method retainAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean - public static method retainAll-impl(@org.jetbrains.annotations.NotNull p0: java.util.Set, @org.jetbrains.annotations.NotNull 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 -} - -@kotlin.Metadata -public final class InlineSet { - // source: 'inlineClassImplementingCollection.kt' - private final @org.jetbrains.annotations.NotNull field s: java.util.Set - private synthetic method (p0: java.util.Set): void - public method add(p0: java.lang.Object): boolean - public method addAll(p0: java.util.Collection): boolean - public synthetic final static method box-impl(p0: java.util.Set): InlineSet - public method clear(): void - public static @org.jetbrains.annotations.NotNull method constructor-impl(@org.jetbrains.annotations.NotNull p0: java.util.Set): java.util.Set - public method contains(p0: java.lang.Object): boolean - public static method contains-impl(@org.jetbrains.annotations.NotNull p0: java.util.Set, p1: java.lang.Object): boolean - public method containsAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean - public static method containsAll-impl(@org.jetbrains.annotations.NotNull p0: java.util.Set, @org.jetbrains.annotations.NotNull 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(@org.jetbrains.annotations.NotNull 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(@org.jetbrains.annotations.NotNull p0: java.util.Set): boolean - public @org.jetbrains.annotations.NotNull method iterator(): java.util.Iterator - public static @org.jetbrains.annotations.NotNull method iterator-impl(@org.jetbrains.annotations.NotNull p0: java.util.Set): 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 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 -} diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/collection.kt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/collection.kt new file mode 100644 index 00000000000..294ffd94e80 --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/collection.kt @@ -0,0 +1,10 @@ +// IGNORE_ANNOTATIONS + +inline class InlineCollection(private val c: Collection) : Collection { + override val size: Int get() = c.size + override fun contains(element: T): Boolean = c.contains(element) + override fun containsAll(elements: Collection): Boolean = c.containsAll(elements) + override fun isEmpty(): Boolean = c.isEmpty() + override fun iterator(): Iterator = c.iterator() +} + diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/collection.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/collection.txt new file mode 100644 index 00000000000..3e17a66fd24 --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/collection.txt @@ -0,0 +1,34 @@ +public final class InlineCollection { + // source: 'collection.kt' + private final field c: java.util.Collection + private synthetic method (p0: java.util.Collection): void + public method add(p0: java.lang.Object): boolean + public method addAll(p0: java.util.Collection): boolean + public synthetic final static method box-impl(p0: java.util.Collection): InlineCollection + public method clear(): void + public static method constructor-impl(p0: java.util.Collection): java.util.Collection + public method contains(p0: java.lang.Object): boolean + public static method contains-impl(p0: java.util.Collection, p1: java.lang.Object): 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 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 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 +} diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/collection_ir.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/collection_ir.txt new file mode 100644 index 00000000000..b17b38931b5 --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/collection_ir.txt @@ -0,0 +1,34 @@ +public final class InlineCollection { + // source: 'collection.kt' + private final field c: java.util.Collection + private synthetic method (p0: java.util.Collection): void + public method add(p0: java.lang.Object): boolean + public method addAll(p0: java.util.Collection): boolean + public synthetic final static method box-impl(p0: java.util.Collection): InlineCollection + public method clear(): void + public static method constructor-impl(p0: java.util.Collection): java.util.Collection + public method contains(p0: java.lang.Object): boolean + public static method contains-impl(p0: java.util.Collection, p1: java.lang.Object): 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 method remove(p0: java.lang.Object): boolean + public method removeAll(p0: java.util.Collection): boolean + public method retainAll(p0: 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 +} diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/iterable.kt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/iterable.kt new file mode 100644 index 00000000000..9c119dcb49b --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/iterable.kt @@ -0,0 +1,6 @@ +// IGNORE_ANNOTATIONS + +inline class InlineIterable(private val it: Iterable) : Iterable { + override fun iterator(): Iterator = it.iterator() +} + diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/iterable.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/iterable.txt new file mode 100644 index 00000000000..ef3f96e2adb --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/iterable.txt @@ -0,0 +1,17 @@ +public final class InlineIterable { + // source: 'iterable.kt' + private final field it: java.lang.Iterable + private synthetic method (p0: java.lang.Iterable): void + public synthetic final static method box-impl(p0: java.lang.Iterable): InlineIterable + public static method constructor-impl(p0: java.lang.Iterable): java.lang.Iterable + public method equals(p0: java.lang.Object): boolean + public static method equals-impl(p0: java.lang.Iterable, p1: java.lang.Object): boolean + public final static method equals-impl0(p0: java.lang.Iterable, p1: java.lang.Iterable): boolean + public method hashCode(): int + public static method hashCode-impl(p0: java.lang.Iterable): int + public method iterator(): java.util.Iterator + public static method iterator-impl(p0: java.lang.Iterable): java.util.Iterator + public method toString(): java.lang.String + public static method toString-impl(p0: java.lang.Iterable): java.lang.String + public synthetic final method unbox-impl(): java.lang.Iterable +} diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/iterator.kt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/iterator.kt new file mode 100644 index 00000000000..c26e8cc5fd1 --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/iterator.kt @@ -0,0 +1,7 @@ +// IGNORE_ANNOTATIONS + +inline class InlineIterator(private val it: Iterator) : Iterator { + override fun hasNext(): Boolean = it.hasNext() + override fun next(): T = it.next() +} + diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/iterator.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/iterator.txt new file mode 100644 index 00000000000..a8e0cf35fa2 --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/iterator.txt @@ -0,0 +1,20 @@ +public final class InlineIterator { + // source: 'iterator.kt' + private final field it: java.util.Iterator + private synthetic method (p0: java.util.Iterator): void + public synthetic final static method box-impl(p0: java.util.Iterator): InlineIterator + public static method constructor-impl(p0: java.util.Iterator): java.util.Iterator + public method equals(p0: java.lang.Object): boolean + public static method equals-impl(p0: java.util.Iterator, p1: java.lang.Object): boolean + public final static method equals-impl0(p0: java.util.Iterator, p1: java.util.Iterator): boolean + public method hasNext(): boolean + public static method hasNext-impl(p0: java.util.Iterator): boolean + public method hashCode(): int + public static method hashCode-impl(p0: java.util.Iterator): int + public method next(): java.lang.Object + public static method next-impl(p0: java.util.Iterator): java.lang.Object + public method remove(): void + public method toString(): java.lang.String + public static method toString-impl(p0: java.util.Iterator): java.lang.String + public synthetic final method unbox-impl(): java.util.Iterator +} diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/list.kt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/list.kt new file mode 100644 index 00000000000..ab2a15ed4b0 --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/list.kt @@ -0,0 +1,16 @@ +// IGNORE_ANNOTATIONS + +inline class InlineList(private val list: List) : List { + override val size: Int get() = list.size + override fun contains(element: T): Boolean = list.contains(element) + override fun containsAll(elements: Collection): Boolean = list.containsAll(elements) + override fun get(index: Int): T = list[index] + override fun indexOf(element: T): Int = list.indexOf(element) + override fun isEmpty(): Boolean = list.isEmpty() + override fun iterator(): Iterator = list.iterator() + override fun lastIndexOf(element: T): Int = list.lastIndexOf(element) + override fun listIterator(): ListIterator = list.listIterator() + override fun listIterator(index: Int): ListIterator = list.listIterator(index) + override fun subList(fromIndex: Int, toIndex: Int): List = list.subList(fromIndex, toIndex) +} + diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/list.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/list.txt new file mode 100644 index 00000000000..bc1df061a4b --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/list.txt @@ -0,0 +1,50 @@ +public final class InlineList { + // source: 'list.kt' + private final field list: java.util.List + private synthetic method (p0: java.util.List): void + public method add(p0: int, p1: java.lang.Object): void + public method add(p0: java.lang.Object): boolean + public method addAll(p0: int, p1: java.util.Collection): boolean + public method addAll(p0: java.util.Collection): boolean + public synthetic final static method box-impl(p0: java.util.List): InlineList + public method clear(): void + public static method constructor-impl(p0: java.util.List): java.util.List + public method contains(p0: java.lang.Object): boolean + public static method contains-impl(p0: java.util.List, p1: java.lang.Object): boolean + public method containsAll(p0: java.util.Collection): boolean + public static method containsAll-impl(p0: java.util.List, p1: java.util.Collection): boolean + public method equals(p0: java.lang.Object): boolean + public static method equals-impl(p0: java.util.List, p1: java.lang.Object): boolean + public final static method equals-impl0(p0: java.util.List, p1: java.util.List): boolean + public method get(p0: int): java.lang.Object + public static method get-impl(p0: java.util.List, p1: int): java.lang.Object + public method getSize(): int + public static method getSize-impl(p0: java.util.List): int + public method hashCode(): int + public static method hashCode-impl(p0: java.util.List): int + public method indexOf(p0: java.lang.Object): int + public static method indexOf-impl(p0: java.util.List, p1: java.lang.Object): int + public method isEmpty(): boolean + public static method isEmpty-impl(p0: java.util.List): boolean + public method iterator(): java.util.Iterator + public static method iterator-impl(p0: java.util.List): java.util.Iterator + public method lastIndexOf(p0: java.lang.Object): int + public static method lastIndexOf-impl(p0: java.util.List, p1: java.lang.Object): int + public method listIterator(): java.util.ListIterator + public method listIterator(p0: int): java.util.ListIterator + public static method listIterator-impl(p0: java.util.List): java.util.ListIterator + public static method listIterator-impl(p0: java.util.List, p1: int): java.util.ListIterator + public method remove(p0: int): java.lang.Object + 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 method set(p0: int, p1: java.lang.Object): java.lang.Object + public bridge final method size(): int + public method subList(p0: int, p1: int): java.util.List + public static method subList-impl(p0: java.util.List, p1: int, p2: int): java.util.List + 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.List): java.lang.String + public synthetic final method unbox-impl(): java.util.List +} diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/list_ir.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/list_ir.txt new file mode 100644 index 00000000000..bb8b5e5b164 --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/list_ir.txt @@ -0,0 +1,50 @@ +public final class InlineList { + // source: 'list.kt' + private final field list: java.util.List + private synthetic method (p0: java.util.List): void + public method add(p0: int, p1: java.lang.Object): void + public method add(p0: java.lang.Object): boolean + public method addAll(p0: int, p1: java.util.Collection): boolean + public method addAll(p0: java.util.Collection): boolean + public synthetic final static method box-impl(p0: java.util.List): InlineList + public method clear(): void + public static method constructor-impl(p0: java.util.List): java.util.List + public method contains(p0: java.lang.Object): boolean + public static method contains-impl(p0: java.util.List, p1: java.lang.Object): boolean + public method containsAll(p0: java.util.Collection): boolean + public static method containsAll-impl(p0: java.util.List, p1: java.util.Collection): boolean + public method equals(p0: java.lang.Object): boolean + public static method equals-impl(p0: java.util.List, p1: java.lang.Object): boolean + public final static method equals-impl0(p0: java.util.List, p1: java.util.List): boolean + public method get(p0: int): java.lang.Object + public static method get-impl(p0: java.util.List, p1: int): java.lang.Object + public method getSize(): int + public static method getSize-impl(p0: java.util.List): int + public method hashCode(): int + public static method hashCode-impl(p0: java.util.List): int + public method indexOf(p0: java.lang.Object): int + public static method indexOf-impl(p0: java.util.List, p1: java.lang.Object): int + public method isEmpty(): boolean + public static method isEmpty-impl(p0: java.util.List): boolean + public method iterator(): java.util.Iterator + public static method iterator-impl(p0: java.util.List): java.util.Iterator + public method lastIndexOf(p0: java.lang.Object): int + public static method lastIndexOf-impl(p0: java.util.List, p1: java.lang.Object): int + public method listIterator(): java.util.ListIterator + public method listIterator(p0: int): java.util.ListIterator + public static method listIterator-impl(p0: java.util.List): java.util.ListIterator + public static method listIterator-impl(p0: java.util.List, p1: int): java.util.ListIterator + public method remove(p0: int): java.lang.Object + 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 method set(p0: int, p1: java.lang.Object): java.lang.Object + public synthetic bridge method size(): int + public method subList(p0: int, p1: int): java.util.List + public static method subList-impl(p0: java.util.List, p1: int, p2: int): java.util.List + 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.List): java.lang.String + public synthetic final method unbox-impl(): java.util.List +} diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/map.kt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/map.kt new file mode 100644 index 00000000000..94045fd33a5 --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/map.kt @@ -0,0 +1,13 @@ +// IGNORE_ANNOTATIONS + +inline class InlineMap(private val map: Map) : Map { + override val entries: Set> get() = map.entries + override val keys: Set get() = map.keys + override val size: Int get() = map.size + override val values: Collection get() = map.values + override fun containsKey(key: K): Boolean = map.containsKey(key) + override fun containsValue(value: V): Boolean = map.containsValue(value) + override fun get(key: K): V? = map[key] + override fun isEmpty(): Boolean = map.isEmpty() +} + diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/map.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/map.txt new file mode 100644 index 00000000000..2055d7ff402 --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/map.txt @@ -0,0 +1,39 @@ +public final class InlineMap { + // source: 'map.kt' + private final field map: java.util.Map + private synthetic method (p0: java.util.Map): void + public synthetic final static method box-impl(p0: java.util.Map): InlineMap + public method clear(): void + public static method constructor-impl(p0: java.util.Map): java.util.Map + public method containsKey(p0: java.lang.Object): boolean + public static method containsKey-impl(p0: java.util.Map, p1: java.lang.Object): boolean + public method containsValue(p0: java.lang.Object): boolean + public static method containsValue-impl(p0: java.util.Map, p1: java.lang.Object): boolean + public bridge final method entrySet(): java.util.Set + public method equals(p0: java.lang.Object): boolean + public static method equals-impl(p0: java.util.Map, p1: java.lang.Object): boolean + public final static method equals-impl0(p0: java.util.Map, p1: java.util.Map): boolean + public method get(p0: java.lang.Object): java.lang.Object + public static method get-impl(p0: java.util.Map, p1: java.lang.Object): java.lang.Object + public method getEntries(): java.util.Set + public static method getEntries-impl(p0: java.util.Map): java.util.Set + public method getKeys(): java.util.Set + public static method getKeys-impl(p0: java.util.Map): java.util.Set + public method getSize(): int + public static method getSize-impl(p0: java.util.Map): int + public method getValues(): java.util.Collection + public static method getValues-impl(p0: java.util.Map): java.util.Collection + public method hashCode(): int + public static method hashCode-impl(p0: java.util.Map): int + public method isEmpty(): boolean + public static method isEmpty-impl(p0: java.util.Map): boolean + public bridge final 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 method toString(): java.lang.String + public static method toString-impl(p0: java.util.Map): java.lang.String + public synthetic final method unbox-impl(): java.util.Map + public bridge final method values(): java.util.Collection +} diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mapEntry.kt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mapEntry.kt new file mode 100644 index 00000000000..9b546a4748e --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mapEntry.kt @@ -0,0 +1,7 @@ +// IGNORE_ANNOTATIONS + +inline class InlineMapEntry(private val e: Map.Entry) : Map.Entry { + override val key: K get() = e.key + override val value: V get() = e.value +} + diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mapEntry.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mapEntry.txt new file mode 100644 index 00000000000..cb0542591f2 --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mapEntry.txt @@ -0,0 +1,20 @@ +public final class InlineMapEntry { + // source: 'mapEntry.kt' + private final field e: java.util.Map$Entry + private synthetic method (p0: java.util.Map$Entry): void + public synthetic final static method box-impl(p0: java.util.Map$Entry): InlineMapEntry + public static method constructor-impl(p0: java.util.Map$Entry): java.util.Map$Entry + public method equals(p0: java.lang.Object): boolean + public static method equals-impl(p0: java.util.Map$Entry, p1: java.lang.Object): boolean + public final static method equals-impl0(p0: java.util.Map$Entry, p1: java.util.Map$Entry): boolean + public method getKey(): java.lang.Object + public static method getKey-impl(p0: java.util.Map$Entry): java.lang.Object + public method getValue(): java.lang.Object + public static method getValue-impl(p0: java.util.Map$Entry): java.lang.Object + public method hashCode(): int + public static method hashCode-impl(p0: java.util.Map$Entry): int + public method setValue(p0: java.lang.Object): java.lang.Object + public method toString(): java.lang.String + public static method toString-impl(p0: java.util.Map$Entry): java.lang.String + public synthetic final method unbox-impl(): java.util.Map$Entry +} diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/map_ir.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/map_ir.txt new file mode 100644 index 00000000000..a3f6520c36c --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/map_ir.txt @@ -0,0 +1,39 @@ +public final class InlineMap { + // source: 'map.kt' + private final field map: java.util.Map + private synthetic method (p0: java.util.Map): void + public synthetic final static method box-impl(p0: java.util.Map): InlineMap + public method clear(): void + public static method constructor-impl(p0: java.util.Map): java.util.Map + public method containsKey(p0: java.lang.Object): boolean + public static method containsKey-impl(p0: java.util.Map, p1: java.lang.Object): boolean + public method containsValue(p0: java.lang.Object): boolean + public static method containsValue-impl(p0: java.util.Map, p1: java.lang.Object): boolean + public synthetic bridge method entrySet(): java.util.Set + public method equals(p0: java.lang.Object): boolean + public static method equals-impl(p0: java.util.Map, p1: java.lang.Object): boolean + public final static method equals-impl0(p0: java.util.Map, p1: java.util.Map): boolean + public method get(p0: java.lang.Object): java.lang.Object + public static method get-impl(p0: java.util.Map, p1: java.lang.Object): java.lang.Object + public method getEntries(): java.util.Set + public static method getEntries-impl(p0: java.util.Map): java.util.Set + public method getKeys(): java.util.Set + public static method getKeys-impl(p0: java.util.Map): java.util.Set + public method getSize(): int + public static method getSize-impl(p0: java.util.Map): int + public method getValues(): java.util.Collection + public static method getValues-impl(p0: java.util.Map): java.util.Collection + public method hashCode(): int + public static method hashCode-impl(p0: java.util.Map): int + public method isEmpty(): boolean + public static method isEmpty-impl(p0: java.util.Map): boolean + 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 synthetic bridge method size(): int + public method toString(): java.lang.String + public static method toString-impl(p0: java.util.Map): java.lang.String + public synthetic final method unbox-impl(): java.util.Map + public synthetic bridge method values(): java.util.Collection +} diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableCollection.kt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableCollection.kt new file mode 100644 index 00000000000..196dc090c5b --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableCollection.kt @@ -0,0 +1,16 @@ +// IGNORE_ANNOTATIONS + +inline class InlineMutableCollection(private val mc: MutableCollection) : MutableCollection { + override val size: Int get() = mc.size + override fun contains(element: T): Boolean = mc.contains(element) + override fun containsAll(elements: Collection): Boolean = mc.containsAll(elements) + override fun isEmpty(): Boolean = mc.isEmpty() + override fun add(element: T): Boolean = mc.add(element) + override fun addAll(elements: Collection): Boolean = mc.addAll(elements) + override fun clear() { mc.clear() } + override fun iterator(): MutableIterator = mc.iterator() + override fun remove(element: T): Boolean = mc.remove(element) + override fun removeAll(elements: Collection): Boolean = mc.removeAll(elements) + override fun retainAll(elements: Collection): Boolean = mc.retainAll(elements) +} + diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableCollection.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableCollection.txt new file mode 100644 index 00000000000..99001464e90 --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableCollection.txt @@ -0,0 +1,40 @@ +public final class InlineMutableCollection { + // source: 'mutableCollection.kt' + private final field mc: java.util.Collection + private synthetic method (p0: java.util.Collection): void + public method add(p0: java.lang.Object): boolean + public static method add-impl(p0: java.util.Collection, p1: java.lang.Object): boolean + public method addAll(p0: java.util.Collection): boolean + public static method addAll-impl(p0: InlineMutableCollection, 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 method contains(p0: java.lang.Object): boolean + public static method contains-impl(p0: java.util.Collection, p1: java.lang.Object): 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 method remove(p0: java.lang.Object): boolean + public static method remove-impl(p0: java.util.Collection, p1: java.lang.Object): 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 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.Collection): java.lang.String + public synthetic final method unbox-impl(): java.util.Collection +} diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableCollection_ir.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableCollection_ir.txt new file mode 100644 index 00000000000..8343cb8ca4e --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableCollection_ir.txt @@ -0,0 +1,40 @@ +public final class InlineMutableCollection { + // source: 'mutableCollection.kt' + private final field mc: java.util.Collection + private synthetic method (p0: java.util.Collection): void + public method add(p0: java.lang.Object): boolean + public static method add-impl(p0: java.util.Collection, p1: java.lang.Object): boolean + public method addAll(p0: java.util.Collection): boolean + public static method addAll-impl(p0: InlineMutableCollection, 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 method contains(p0: java.lang.Object): boolean + public static method contains-impl(p0: java.util.Collection, p1: java.lang.Object): 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 method remove(p0: java.lang.Object): boolean + public static method remove-impl(p0: java.util.Collection, p1: java.lang.Object): 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 +} diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableIterable.kt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableIterable.kt new file mode 100644 index 00000000000..f3677aa873c --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableIterable.kt @@ -0,0 +1,6 @@ +// IGNORE_ANNOTATIONS + +inline class InlineMutableIterable(private val it: MutableIterable) : MutableIterable { + override fun iterator(): MutableIterator = it.iterator() +} + diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableIterable.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableIterable.txt new file mode 100644 index 00000000000..6e54b2879de --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableIterable.txt @@ -0,0 +1,17 @@ +public final class InlineMutableIterable { + // source: 'mutableIterable.kt' + private final field it: java.lang.Iterable + private synthetic method (p0: java.lang.Iterable): void + public synthetic final static method box-impl(p0: java.lang.Iterable): InlineMutableIterable + public static method constructor-impl(p0: java.lang.Iterable): java.lang.Iterable + public method equals(p0: java.lang.Object): boolean + public static method equals-impl(p0: java.lang.Iterable, p1: java.lang.Object): boolean + public final static method equals-impl0(p0: java.lang.Iterable, p1: java.lang.Iterable): boolean + public method hashCode(): int + public static method hashCode-impl(p0: java.lang.Iterable): int + public method iterator(): java.util.Iterator + public static method iterator-impl(p0: java.lang.Iterable): java.util.Iterator + public method toString(): java.lang.String + public static method toString-impl(p0: java.lang.Iterable): java.lang.String + public synthetic final method unbox-impl(): java.lang.Iterable +} diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableIterator.kt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableIterator.kt new file mode 100644 index 00000000000..c39216983e7 --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableIterator.kt @@ -0,0 +1,8 @@ +// IGNORE_ANNOTATIONS + +inline class InlineMutableIterator(private val it: MutableIterator) : MutableIterator { + override fun hasNext(): Boolean = it.hasNext() + override fun next(): T = it.next() + override fun remove() { it.remove() } +} + diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableIterator.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableIterator.txt new file mode 100644 index 00000000000..d21744bb396 --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableIterator.txt @@ -0,0 +1,21 @@ +public final class InlineMutableIterator { + // source: 'mutableIterator.kt' + private final field it: java.util.Iterator + private synthetic method (p0: java.util.Iterator): void + public synthetic final static method box-impl(p0: java.util.Iterator): InlineMutableIterator + public static method constructor-impl(p0: java.util.Iterator): java.util.Iterator + public method equals(p0: java.lang.Object): boolean + public static method equals-impl(p0: java.util.Iterator, p1: java.lang.Object): boolean + public final static method equals-impl0(p0: java.util.Iterator, p1: java.util.Iterator): boolean + public method hasNext(): boolean + public static method hasNext-impl(p0: java.util.Iterator): boolean + public method hashCode(): int + public static method hashCode-impl(p0: java.util.Iterator): int + public method next(): java.lang.Object + public static method next-impl(p0: java.util.Iterator): java.lang.Object + public method remove(): void + public static method remove-impl(p0: java.util.Iterator): void + public method toString(): java.lang.String + public static method toString-impl(p0: java.util.Iterator): java.lang.String + public synthetic final method unbox-impl(): java.util.Iterator +} diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableList.kt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableList.kt new file mode 100644 index 00000000000..84db6062e33 --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableList.kt @@ -0,0 +1,26 @@ +// IGNORE_ANNOTATIONS + +inline class InlineMutableList(private val mlist: MutableList) : MutableList { + override val size: Int get() = mlist.size + override fun contains(element: T): Boolean = mlist.contains(element) + override fun containsAll(elements: Collection): Boolean = mlist.containsAll(elements) + override fun get(index: Int): T = mlist[index] + override fun indexOf(element: T): Int = mlist.indexOf(element) + override fun isEmpty(): Boolean = mlist.isEmpty() + override fun iterator(): MutableIterator = mlist.iterator() + override fun lastIndexOf(element: T): Int = mlist.lastIndexOf(element) + override fun add(element: T): Boolean = mlist.add(element) + override fun add(index: Int, element: T) { mlist.add(index, element) } + override fun addAll(index: Int, elements: Collection): Boolean = mlist.addAll(index, elements) + override fun addAll(elements: Collection): Boolean = mlist.addAll(elements) + override fun clear() { mlist.clear() } + override fun listIterator(): MutableListIterator = mlist.listIterator() + override fun listIterator(index: Int): MutableListIterator = mlist.listIterator(index) + override fun remove(element: T): Boolean = mlist.remove(element) + override fun removeAll(elements: Collection): Boolean = mlist.removeAll(elements) + override fun removeAt(index: Int): T = mlist.removeAt(index) + override fun retainAll(elements: Collection): Boolean = mlist.retainAll(elements) + override fun set(index: Int, element: T): T = mlist.set(index, element) + override fun subList(fromIndex: Int, toIndex: Int): MutableList = mlist.subList(fromIndex, toIndex) +} + diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableList.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableList.txt new file mode 100644 index 00000000000..5d809e3b793 --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableList.txt @@ -0,0 +1,61 @@ +public final class InlineMutableList { + // source: 'mutableList.kt' + private final field mlist: java.util.List + private synthetic method (p0: java.util.List): void + public method add(p0: int, p1: java.lang.Object): void + public method add(p0: java.lang.Object): boolean + public static method add-impl(p0: java.util.List, p1: int, p2: java.lang.Object): void + public static method add-impl(p0: java.util.List, p1: java.lang.Object): boolean + public method addAll(p0: int, p1: java.util.Collection): boolean + public method addAll(p0: java.util.Collection): boolean + public static method addAll-impl(p0: InlineMutableList, p1: int, p2: java.util.Collection): boolean + public static method addAll-impl(p0: InlineMutableList, p1: java.util.Collection): boolean + public synthetic final static method box-impl(p0: java.util.List): InlineMutableList + public method clear(): void + public static method clear-impl(p0: java.util.List): void + public static method constructor-impl(p0: java.util.List): java.util.List + public method contains(p0: java.lang.Object): boolean + public static method contains-impl(p0: java.util.List, p1: java.lang.Object): boolean + public method containsAll(p0: java.util.Collection): boolean + public static method containsAll-impl(p0: java.util.List, p1: java.util.Collection): boolean + public method equals(p0: java.lang.Object): boolean + public static method equals-impl(p0: java.util.List, p1: java.lang.Object): boolean + public final static method equals-impl0(p0: java.util.List, p1: java.util.List): boolean + public method get(p0: int): java.lang.Object + public static method get-impl(p0: java.util.List, p1: int): java.lang.Object + public method getSize(): int + public static method getSize-impl(p0: java.util.List): int + public method hashCode(): int + public static method hashCode-impl(p0: java.util.List): int + public method indexOf(p0: java.lang.Object): int + public static method indexOf-impl(p0: java.util.List, p1: java.lang.Object): int + public method isEmpty(): boolean + public static method isEmpty-impl(p0: java.util.List): boolean + public method iterator(): java.util.Iterator + public static method iterator-impl(p0: java.util.List): java.util.Iterator + public method lastIndexOf(p0: java.lang.Object): int + public static method lastIndexOf-impl(p0: java.util.List, p1: java.lang.Object): int + public method listIterator(): java.util.ListIterator + public method listIterator(p0: int): java.util.ListIterator + public static method listIterator-impl(p0: java.util.List): java.util.ListIterator + public static method listIterator-impl(p0: java.util.List, p1: int): java.util.ListIterator + public bridge final method remove(p0: int): java.lang.Object + public method remove(p0: java.lang.Object): boolean + public static method remove-impl(p0: java.util.List, p1: java.lang.Object): boolean + public method removeAll(p0: java.util.Collection): boolean + public static method removeAll-impl(p0: java.util.List, p1: java.util.Collection): boolean + public method removeAt(p0: int): java.lang.Object + public static method removeAt-impl(p0: java.util.List, p1: int): java.lang.Object + public method retainAll(p0: java.util.Collection): boolean + public static method retainAll-impl(p0: java.util.List, p1: java.util.Collection): boolean + public method set(p0: int, p1: java.lang.Object): java.lang.Object + public static method set-impl(p0: java.util.List, p1: int, p2: java.lang.Object): java.lang.Object + public bridge final method size(): int + public method subList(p0: int, p1: int): java.util.List + public static method subList-impl(p0: java.util.List, p1: int, p2: int): java.util.List + 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.List): java.lang.String + public synthetic final method unbox-impl(): java.util.List +} diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableList_ir.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableList_ir.txt new file mode 100644 index 00000000000..f5ce6e130b4 --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableList_ir.txt @@ -0,0 +1,61 @@ +public final class InlineMutableList { + // source: 'mutableList.kt' + private final field mlist: java.util.List + private synthetic method (p0: java.util.List): void + public method add(p0: int, p1: java.lang.Object): void + public method add(p0: java.lang.Object): boolean + public static method add-impl(p0: java.util.List, p1: int, p2: java.lang.Object): void + public static method add-impl(p0: java.util.List, p1: java.lang.Object): boolean + public method addAll(p0: int, p1: java.util.Collection): boolean + public method addAll(p0: java.util.Collection): boolean + public static method addAll-impl(p0: InlineMutableList, p1: int, p2: java.util.Collection): boolean + public static method addAll-impl(p0: InlineMutableList, p1: java.util.Collection): boolean + public synthetic final static method box-impl(p0: java.util.List): InlineMutableList + public method clear(): void + public static method clear-impl(p0: java.util.List): void + public static method constructor-impl(p0: java.util.List): java.util.List + public method contains(p0: java.lang.Object): boolean + public static method contains-impl(p0: java.util.List, p1: java.lang.Object): boolean + public method containsAll(p0: java.util.Collection): boolean + public static method containsAll-impl(p0: java.util.List, p1: java.util.Collection): boolean + public method equals(p0: java.lang.Object): boolean + public static method equals-impl(p0: java.util.List, p1: java.lang.Object): boolean + public final static method equals-impl0(p0: java.util.List, p1: java.util.List): boolean + public method get(p0: int): java.lang.Object + public static method get-impl(p0: java.util.List, p1: int): java.lang.Object + public method getSize(): int + public static method getSize-impl(p0: java.util.List): int + public method hashCode(): int + public static method hashCode-impl(p0: java.util.List): int + public method indexOf(p0: java.lang.Object): int + public static method indexOf-impl(p0: java.util.List, p1: java.lang.Object): int + public method isEmpty(): boolean + public static method isEmpty-impl(p0: java.util.List): boolean + public method iterator(): java.util.Iterator + public static method iterator-impl(p0: java.util.List): java.util.Iterator + public method lastIndexOf(p0: java.lang.Object): int + public static method lastIndexOf-impl(p0: java.util.List, p1: java.lang.Object): int + public method listIterator(): java.util.ListIterator + public method listIterator(p0: int): java.util.ListIterator + public static method listIterator-impl(p0: java.util.List): java.util.ListIterator + public static method listIterator-impl(p0: java.util.List, p1: int): java.util.ListIterator + public bridge final method remove(p0: int): java.lang.Object + public method remove(p0: java.lang.Object): boolean + public static method remove-impl(p0: java.util.List, p1: java.lang.Object): boolean + public method removeAll(p0: java.util.Collection): boolean + public static method removeAll-impl(p0: java.util.List, p1: java.util.Collection): boolean + public method removeAt(p0: int): java.lang.Object + public static method removeAt-impl(p0: java.util.List, p1: int): java.lang.Object + public method retainAll(p0: java.util.Collection): boolean + public static method retainAll-impl(p0: java.util.List, p1: java.util.Collection): boolean + public method set(p0: int, p1: java.lang.Object): java.lang.Object + public static method set-impl(p0: java.util.List, p1: int, p2: java.lang.Object): java.lang.Object + public synthetic bridge method size(): int + public method subList(p0: int, p1: int): java.util.List + public static method subList-impl(p0: java.util.List, p1: int, p2: int): java.util.List + 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.List): java.lang.String + public synthetic final method unbox-impl(): java.util.List +} diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableMap.kt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableMap.kt new file mode 100644 index 00000000000..a3fa6197dcc --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableMap.kt @@ -0,0 +1,17 @@ +// IGNORE_ANNOTATIONS + +inline class InlineMutableMap(private val mmap: MutableMap) : MutableMap { + override val size: Int get() = mmap.size + override fun containsKey(key: K): Boolean = mmap.containsKey(key) + override fun containsValue(value: V): Boolean = mmap.containsValue(value) + override fun get(key: K): V? = mmap[key] + override fun isEmpty(): Boolean = mmap.isEmpty() + override val entries: MutableSet> get() = mmap.entries + override val keys: MutableSet get() = mmap.keys + override val values: MutableCollection get() = mmap.values + override fun clear() { mmap.clear() } + override fun put(key: K, value: V): V? = mmap.put(key, value) + override fun putAll(from: Map) { mmap.putAll(from) } + override fun remove(key: K): V? = mmap.remove(key) +} + diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableMap.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableMap.txt new file mode 100644 index 00000000000..38415287c82 --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableMap.txt @@ -0,0 +1,43 @@ +public final class InlineMutableMap { + // source: 'mutableMap.kt' + private final field mmap: java.util.Map + private synthetic method (p0: java.util.Map): void + public synthetic final static method box-impl(p0: java.util.Map): InlineMutableMap + public method clear(): void + public static method clear-impl(p0: java.util.Map): void + public static method constructor-impl(p0: java.util.Map): java.util.Map + public method containsKey(p0: java.lang.Object): boolean + public static method containsKey-impl(p0: java.util.Map, p1: java.lang.Object): boolean + public method containsValue(p0: java.lang.Object): boolean + public static method containsValue-impl(p0: java.util.Map, p1: java.lang.Object): boolean + public bridge final method entrySet(): java.util.Set + public method equals(p0: java.lang.Object): boolean + public static method equals-impl(p0: java.util.Map, p1: java.lang.Object): boolean + public final static method equals-impl0(p0: java.util.Map, p1: java.util.Map): boolean + public method get(p0: java.lang.Object): java.lang.Object + public static method get-impl(p0: java.util.Map, p1: java.lang.Object): java.lang.Object + public method getEntries(): java.util.Set + public static method getEntries-impl(p0: java.util.Map): java.util.Set + public method getKeys(): java.util.Set + public static method getKeys-impl(p0: java.util.Map): java.util.Set + public method getSize(): int + public static method getSize-impl(p0: java.util.Map): int + public method getValues(): java.util.Collection + public static method getValues-impl(p0: java.util.Map): java.util.Collection + public method hashCode(): int + public static method hashCode-impl(p0: java.util.Map): int + public method isEmpty(): boolean + public static method isEmpty-impl(p0: java.util.Map): boolean + public bridge final method keySet(): java.util.Set + public method put(p0: java.lang.Object, p1: java.lang.Object): java.lang.Object + public static method put-impl(p0: java.util.Map, p1: java.lang.Object, p2: java.lang.Object): java.lang.Object + public method putAll(p0: java.util.Map): void + public static method putAll-impl(p0: InlineMutableMap, p1: java.util.Map): void + public method remove(p0: java.lang.Object): java.lang.Object + public static method remove-impl(p0: java.util.Map, p1: java.lang.Object): java.lang.Object + public bridge final method size(): int + public method toString(): java.lang.String + public static method toString-impl(p0: java.util.Map): java.lang.String + public synthetic final method unbox-impl(): java.util.Map + public bridge final method values(): java.util.Collection +} diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableMapEntry.kt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableMapEntry.kt new file mode 100644 index 00000000000..81bf209727a --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableMapEntry.kt @@ -0,0 +1,7 @@ +// IGNORE_ANNOTATIONS + +inline class InlineMutableMapEntry(private val e: MutableMap.MutableEntry) : MutableMap.MutableEntry { + override val key: K get() = e.key + override val value: V get() = e.value + override fun setValue(newValue: V): V = e.setValue(newValue) +} \ No newline at end of file diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableMapEntry.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableMapEntry.txt new file mode 100644 index 00000000000..644c849d186 --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableMapEntry.txt @@ -0,0 +1,21 @@ +public final class InlineMutableMapEntry { + // source: 'mutableMapEntry.kt' + private final field e: java.util.Map$Entry + private synthetic method (p0: java.util.Map$Entry): void + public synthetic final static method box-impl(p0: java.util.Map$Entry): InlineMutableMapEntry + public static method constructor-impl(p0: java.util.Map$Entry): java.util.Map$Entry + public method equals(p0: java.lang.Object): boolean + public static method equals-impl(p0: java.util.Map$Entry, p1: java.lang.Object): boolean + public final static method equals-impl0(p0: java.util.Map$Entry, p1: java.util.Map$Entry): boolean + public method getKey(): java.lang.Object + public static method getKey-impl(p0: java.util.Map$Entry): java.lang.Object + public method getValue(): java.lang.Object + public static method getValue-impl(p0: java.util.Map$Entry): java.lang.Object + public method hashCode(): int + public static method hashCode-impl(p0: java.util.Map$Entry): int + public method setValue(p0: java.lang.Object): java.lang.Object + public static method setValue-impl(p0: java.util.Map$Entry, p1: java.lang.Object): java.lang.Object + public method toString(): java.lang.String + public static method toString-impl(p0: java.util.Map$Entry): java.lang.String + public synthetic final method unbox-impl(): java.util.Map$Entry +} diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableMap_ir.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableMap_ir.txt new file mode 100644 index 00000000000..8aab2c8d496 --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableMap_ir.txt @@ -0,0 +1,43 @@ +public final class InlineMutableMap { + // source: 'mutableMap.kt' + private final field mmap: java.util.Map + private synthetic method (p0: java.util.Map): void + public synthetic final static method box-impl(p0: java.util.Map): InlineMutableMap + public method clear(): void + public static method clear-impl(p0: java.util.Map): void + public static method constructor-impl(p0: java.util.Map): java.util.Map + public method containsKey(p0: java.lang.Object): boolean + public static method containsKey-impl(p0: java.util.Map, p1: java.lang.Object): boolean + public method containsValue(p0: java.lang.Object): boolean + public static method containsValue-impl(p0: java.util.Map, p1: java.lang.Object): boolean + public synthetic bridge method entrySet(): java.util.Set + public method equals(p0: java.lang.Object): boolean + public static method equals-impl(p0: java.util.Map, p1: java.lang.Object): boolean + public final static method equals-impl0(p0: java.util.Map, p1: java.util.Map): boolean + public method get(p0: java.lang.Object): java.lang.Object + public static method get-impl(p0: java.util.Map, p1: java.lang.Object): java.lang.Object + public method getEntries(): java.util.Set + public static method getEntries-impl(p0: java.util.Map): java.util.Set + public method getKeys(): java.util.Set + public static method getKeys-impl(p0: java.util.Map): java.util.Set + public method getSize(): int + public static method getSize-impl(p0: java.util.Map): int + public method getValues(): java.util.Collection + public static method getValues-impl(p0: java.util.Map): java.util.Collection + public method hashCode(): int + public static method hashCode-impl(p0: java.util.Map): int + public method isEmpty(): boolean + public static method isEmpty-impl(p0: java.util.Map): boolean + public synthetic bridge method keySet(): java.util.Set + public method put(p0: java.lang.Object, p1: java.lang.Object): java.lang.Object + public static method put-impl(p0: java.util.Map, p1: java.lang.Object, p2: java.lang.Object): java.lang.Object + public method putAll(p0: java.util.Map): void + public static method putAll-impl(p0: InlineMutableMap, p1: java.util.Map): void + public method remove(p0: java.lang.Object): java.lang.Object + public static method remove-impl(p0: java.util.Map, p1: java.lang.Object): java.lang.Object + public synthetic bridge method size(): int + public method toString(): java.lang.String + public static method toString-impl(p0: java.util.Map): java.lang.String + public synthetic final method unbox-impl(): java.util.Map + public synthetic bridge method values(): java.util.Collection +} diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableSet.kt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableSet.kt new file mode 100644 index 00000000000..052c48f9ba7 --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableSet.kt @@ -0,0 +1,16 @@ +// IGNORE_ANNOTATIONS + +inline class InlineMutableSet(private val ms: MutableSet) : MutableSet { + override val size: Int get() = ms.size + override fun contains(element: T): Boolean = ms.contains(element) + override fun containsAll(elements: Collection): Boolean = ms.containsAll(elements) + override fun isEmpty(): Boolean = ms.isEmpty() + override fun add(element: T): Boolean = ms.add(element) + override fun addAll(elements: Collection): Boolean = ms.addAll(elements) + override fun clear() { ms.clear() } + override fun iterator(): MutableIterator = ms.iterator() + override fun remove(element: T): Boolean = ms.remove(element) + override fun removeAll(elements: Collection): Boolean = ms.removeAll(elements) + override fun retainAll(elements: Collection): Boolean = ms.retainAll(elements) +} + diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableSet.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableSet.txt new file mode 100644 index 00000000000..3ae42dc181f --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableSet.txt @@ -0,0 +1,40 @@ +public final class InlineMutableSet { + // source: 'mutableSet.kt' + private final field ms: java.util.Set + private synthetic method (p0: java.util.Set): void + public method add(p0: java.lang.Object): boolean + public static method add-impl(p0: java.util.Set, p1: java.lang.Object): boolean + public method addAll(p0: java.util.Collection): boolean + public static method addAll-impl(p0: InlineMutableSet, 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 method contains(p0: java.lang.Object): boolean + public static method contains-impl(p0: java.util.Set, p1: java.lang.Object): 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 method remove(p0: java.lang.Object): boolean + public static method remove-impl(p0: java.util.Set, p1: java.lang.Object): 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 +} diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableSet_ir.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableSet_ir.txt new file mode 100644 index 00000000000..825c72d9292 --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableSet_ir.txt @@ -0,0 +1,40 @@ +public final class InlineMutableSet { + // source: 'mutableSet.kt' + private final field ms: java.util.Set + private synthetic method (p0: java.util.Set): void + public method add(p0: java.lang.Object): boolean + public static method add-impl(p0: java.util.Set, p1: java.lang.Object): boolean + public method addAll(p0: java.util.Collection): boolean + public static method addAll-impl(p0: InlineMutableSet, 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 method contains(p0: java.lang.Object): boolean + public static method contains-impl(p0: java.util.Set, p1: java.lang.Object): 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 method remove(p0: java.lang.Object): boolean + public static method remove-impl(p0: java.util.Set, p1: java.lang.Object): 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 +} diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/set.kt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/set.kt new file mode 100644 index 00000000000..82fbb104abe --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/set.kt @@ -0,0 +1,10 @@ +// IGNORE_ANNOTATIONS + +inline class InlineSet(private val s: Set) : Set { + override val size: Int get() = s.size + override fun contains(element: T): Boolean = s.contains(element) + override fun containsAll(elements: Collection): Boolean = s.containsAll(elements) + override fun isEmpty(): Boolean = s.isEmpty() + override fun iterator(): Iterator = s.iterator() +} + diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/set.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/set.txt new file mode 100644 index 00000000000..1dbd80462a8 --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/set.txt @@ -0,0 +1,34 @@ +public final class InlineSet { + // source: 'set.kt' + private final field s: java.util.Set + private synthetic method (p0: java.util.Set): void + public method add(p0: java.lang.Object): boolean + public method addAll(p0: java.util.Collection): boolean + public synthetic final static method box-impl(p0: java.util.Set): InlineSet + public method clear(): void + public static method constructor-impl(p0: java.util.Set): java.util.Set + public method contains(p0: java.lang.Object): boolean + public static method contains-impl(p0: java.util.Set, p1: java.lang.Object): 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 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 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 +} diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/set_ir.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/set_ir.txt new file mode 100644 index 00000000000..f9c473f8b08 --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/set_ir.txt @@ -0,0 +1,34 @@ +public final class InlineSet { + // source: 'set.kt' + private final field s: java.util.Set + private synthetic method (p0: java.util.Set): void + public method add(p0: java.lang.Object): boolean + public method addAll(p0: java.util.Collection): boolean + public synthetic final static method box-impl(p0: java.util.Set): InlineSet + public method clear(): void + public static method constructor-impl(p0: java.util.Set): java.util.Set + public method contains(p0: java.lang.Object): boolean + public static method contains-impl(p0: java.util.Set, p1: java.lang.Object): 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 method remove(p0: java.lang.Object): boolean + public method removeAll(p0: java.util.Collection): boolean + public method retainAll(p0: 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 +} diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/list.kt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/list.kt index 799130ec4b9..d366eb8020a 100644 --- a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/list.kt +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/list.kt @@ -1,6 +1,4 @@ // IGNORE_ANNOTATIONS -// IGNORE_BACKEND: JVM_IR -// ^ TODO: special bridges <-> inline classes interaction inline class IT(val x: Int) diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/list_ir.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/list_ir.txt new file mode 100644 index 00000000000..0ebc3e3c566 --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/list_ir.txt @@ -0,0 +1,75 @@ +public final class IT { + // source: 'list.kt' + private final field x: int + private synthetic method (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 InlineList { + // source: 'list.kt' + private final field list: java.util.List + private synthetic method (p0: java.util.List): void + public synthetic bridge method add(p0: int, p1: java.lang.Object): void + public synthetic bridge method add(p0: java.lang.Object): boolean + public method add-_bimVNw(p0: int, p1: int): void + public method add-jHY5zpA(p0: int): boolean + public method addAll(p0: int, p1: java.util.Collection): boolean + public method addAll(p0: java.util.Collection): boolean + public synthetic final static method box-impl(p0: java.util.List): InlineList + public method clear(): void + public static method constructor-impl(p0: java.util.List): java.util.List + 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.List, p1: int): boolean + public method containsAll(p0: java.util.Collection): boolean + public static method containsAll-impl(p0: java.util.List, p1: java.util.Collection): boolean + public method equals(p0: java.lang.Object): boolean + public static method equals-impl(p0: java.util.List, p1: java.lang.Object): boolean + public final static method equals-impl0(p0: java.util.List, p1: java.util.List): boolean + public synthetic bridge method get(p0: int): java.lang.Object + public method get-XAcLw3A(p0: int): int + public static method get-XAcLw3A(p0: java.util.List, p1: int): int + public method getSize(): int + public static method getSize-impl(p0: java.util.List): int + public method hashCode(): int + public static method hashCode-impl(p0: java.util.List): int + public synthetic bridge method indexOf(p0: java.lang.Object): int + public method indexOf-jHY5zpA(p0: int): int + public static method indexOf-jHY5zpA(p0: java.util.List, p1: int): int + public method isEmpty(): boolean + public static method isEmpty-impl(p0: java.util.List): boolean + public method iterator(): java.util.Iterator + public static method iterator-impl(p0: java.util.List): java.util.Iterator + public synthetic bridge method lastIndexOf(p0: java.lang.Object): int + public method lastIndexOf-jHY5zpA(p0: int): int + public static method lastIndexOf-jHY5zpA(p0: java.util.List, p1: int): int + public method listIterator(): java.util.ListIterator + public method listIterator(p0: int): java.util.ListIterator + public static method listIterator-impl(p0: java.util.List): java.util.ListIterator + public static method listIterator-impl(p0: java.util.List, p1: int): java.util.ListIterator + public method remove(p0: int): int + public synthetic bridge method remove(p0: int): java.lang.Object + 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 synthetic bridge method set(p0: int, p1: java.lang.Object): java.lang.Object + public method set-_bimVNw(p0: int, p1: int): int + public synthetic bridge method size(): int + public method subList(p0: int, p1: int): java.util.List + public static method subList-impl(p0: java.util.List, p1: int, p2: int): java.util.List + 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.List): java.lang.String + public synthetic final method unbox-impl(): java.util.List +} diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/mutableList.kt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/mutableList.kt index fdcdcc42b62..83109600364 100644 --- a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/mutableList.kt +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/mutableList.kt @@ -1,8 +1,6 @@ // IGNORE_ANNOTATIONS -// IGNORE_BACKEND: JVM_IR -// ^ TODO: special bridges <-> inline classes interaction -inline class IT(val x: Int) +inline class IT(val x: Long) inline class InlineMutableList(private val mlist: MutableList) : MutableList { override val size: Int get() = mlist.size diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/mutableList.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/mutableList.txt index 85101afa481..1b78c07af56 100644 --- a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/mutableList.txt +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/mutableList.txt @@ -1,18 +1,18 @@ public final class IT { // source: 'mutableList.kt' - private final field x: int - private synthetic method (p0: int): void - public synthetic final static method box-impl(p0: int): IT - public static method constructor-impl(p0: int): int + private final field x: long + private synthetic method (p0: long): void + public synthetic final static method box-impl(p0: long): IT + public static method constructor-impl(p0: long): long 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 static method equals-impl(p0: long, p1: java.lang.Object): boolean + public final static method equals-impl0(p0: long, p1: long): boolean + public final method getX(): long public method hashCode(): int - public static method hashCode-impl(p0: int): int + public static method hashCode-impl(p0: long): 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 static method toString-impl(p0: long): java.lang.String + public synthetic final method unbox-impl(): long } public final class InlineMutableList { @@ -21,10 +21,10 @@ public final class InlineMutableList { private synthetic method (p0: java.util.List): void public synthetic bridge method add(p0: int, p1: java.lang.Object): void public synthetic bridge method add(p0: java.lang.Object): boolean - public method add-_bimVNw(p0: int, p1: int): void - public static method add-_bimVNw(p0: java.util.List, p1: int, p2: int): void - public method add-jHY5zpA(p0: int): boolean - public static method add-jHY5zpA(p0: java.util.List, p1: int): boolean + public method add-_bimVNw(p0: int, p1: long): void + public static method add-_bimVNw(p0: java.util.List, p1: int, p2: long): void + public static method add-jHY5zpA(p0: java.util.List, p1: long): boolean + public method add-jHY5zpA(p0: long): boolean public method addAll(p0: int, p1: java.util.Collection): boolean public method addAll(p0: java.util.Collection): boolean public static method addAll-impl(p0: java.util.List, p1: int, p2: java.util.Collection): boolean @@ -34,48 +34,48 @@ public final class InlineMutableList { public static method clear-impl(p0: java.util.List): void public static method constructor-impl(p0: java.util.List): java.util.List public bridge final method contains(p0: java.lang.Object): boolean - public method contains-jHY5zpA(p0: int): boolean - public static method contains-jHY5zpA(p0: java.util.List, p1: int): boolean + public static method contains-jHY5zpA(p0: java.util.List, p1: long): boolean + public method contains-jHY5zpA(p0: long): boolean public method containsAll(p0: java.util.Collection): boolean public static method containsAll-impl(p0: java.util.List, p1: java.util.Collection): boolean public method equals(p0: java.lang.Object): boolean public static method equals-impl(p0: java.util.List, p1: java.lang.Object): boolean public final static method equals-impl0(p0: java.util.List, p1: java.util.List): boolean public synthetic bridge method get(p0: int): java.lang.Object - public method get-XAcLw3A(p0: int): int - public static method get-XAcLw3A(p0: java.util.List, p1: int): int + public method get-XAcLw3A(p0: int): long + public static method get-XAcLw3A(p0: java.util.List, p1: int): long public method getSize(): int public static method getSize-impl(p0: java.util.List): int public method hashCode(): int public static method hashCode-impl(p0: java.util.List): int public bridge final method indexOf(p0: java.lang.Object): int - public method indexOf-jHY5zpA(p0: int): int - public static method indexOf-jHY5zpA(p0: java.util.List, p1: int): int + public static method indexOf-jHY5zpA(p0: java.util.List, p1: long): int + public method indexOf-jHY5zpA(p0: long): int public method isEmpty(): boolean public static method isEmpty-impl(p0: java.util.List): boolean public method iterator(): java.util.Iterator public static method iterator-impl(p0: java.util.List): java.util.Iterator public bridge final method lastIndexOf(p0: java.lang.Object): int - public method lastIndexOf-jHY5zpA(p0: int): int - public static method lastIndexOf-jHY5zpA(p0: java.util.List, p1: int): int + public static method lastIndexOf-jHY5zpA(p0: java.util.List, p1: long): int + public method lastIndexOf-jHY5zpA(p0: long): int public method listIterator(): java.util.ListIterator public method listIterator(p0: int): java.util.ListIterator public static method listIterator-impl(p0: java.util.List): java.util.ListIterator public static method listIterator-impl(p0: java.util.List, p1: int): java.util.ListIterator - public bridge final method remove(p0: int): int public synthetic bridge method remove(p0: int): java.lang.Object + public bridge final method remove(p0: int): long 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.List, p1: IT): boolean + public static method remove-jHY5zpA(p0: java.util.List, p1: long): boolean + public method remove-jHY5zpA(p0: long): boolean public method removeAll(p0: java.util.Collection): boolean public static method removeAll-impl(p0: java.util.List, p1: java.util.Collection): boolean - public method removeAt-XAcLw3A(p0: int): int - public static method removeAt-XAcLw3A(p0: java.util.List, p1: int): int + public method removeAt-XAcLw3A(p0: int): long + public static method removeAt-XAcLw3A(p0: java.util.List, p1: int): long public method retainAll(p0: java.util.Collection): boolean public static method retainAll-impl(p0: java.util.List, p1: java.util.Collection): boolean public synthetic bridge method set(p0: int, p1: java.lang.Object): java.lang.Object - public method set-_bimVNw(p0: int, p1: int): int - public static method set-_bimVNw(p0: java.util.List, p1: int, p2: int): int + public method set-_bimVNw(p0: int, p1: long): long + public static method set-_bimVNw(p0: java.util.List, p1: int, p2: long): long public bridge final method size(): int public method subList(p0: int, p1: int): java.util.List public static method subList-impl(p0: java.util.List, p1: int, p2: int): java.util.List diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/mutableList_ir.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/mutableList_ir.txt new file mode 100644 index 00000000000..f81489c18ba --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/mutableList_ir.txt @@ -0,0 +1,87 @@ +public final class IT { + // source: 'mutableList.kt' + private final field x: long + private synthetic method (p0: long): void + public synthetic final static method box-impl(p0: long): IT + public static method constructor-impl(p0: long): long + public method equals(p0: java.lang.Object): boolean + public static method equals-impl(p0: long, p1: java.lang.Object): boolean + public final static method equals-impl0(p0: long, p1: long): boolean + public final method getX(): long + public method hashCode(): int + public static method hashCode-impl(p0: long): int + public method toString(): java.lang.String + public static method toString-impl(p0: long): java.lang.String + public synthetic final method unbox-impl(): long +} + +public final class InlineMutableList { + // source: 'mutableList.kt' + private final field mlist: java.util.List + private synthetic method (p0: java.util.List): void + public synthetic bridge method add(p0: int, p1: java.lang.Object): void + public synthetic bridge method add(p0: java.lang.Object): boolean + public method add-_bimVNw(p0: int, p1: long): void + public static method add-_bimVNw(p0: java.util.List, p1: int, p2: long): void + public static method add-jHY5zpA(p0: java.util.List, p1: long): boolean + public method add-jHY5zpA(p0: long): boolean + public method addAll(p0: int, p1: java.util.Collection): boolean + public method addAll(p0: java.util.Collection): boolean + public static method addAll-impl(p0: java.util.List, p1: int, p2: java.util.Collection): boolean + public static method addAll-impl(p0: java.util.List, p1: java.util.Collection): boolean + public synthetic final static method box-impl(p0: java.util.List): InlineMutableList + public method clear(): void + public static method clear-impl(p0: java.util.List): void + public static method constructor-impl(p0: java.util.List): java.util.List + public synthetic bridge method contains(p0: java.lang.Object): boolean + public static method contains-jHY5zpA(p0: java.util.List, p1: long): boolean + public method contains-jHY5zpA(p0: long): boolean + public method containsAll(p0: java.util.Collection): boolean + public static method containsAll-impl(p0: java.util.List, p1: java.util.Collection): boolean + public method equals(p0: java.lang.Object): boolean + public static method equals-impl(p0: java.util.List, p1: java.lang.Object): boolean + public final static method equals-impl0(p0: java.util.List, p1: java.util.List): boolean + public synthetic bridge method get(p0: int): java.lang.Object + public method get-XAcLw3A(p0: int): long + public static method get-XAcLw3A(p0: java.util.List, p1: int): long + public method getSize(): int + public static method getSize-impl(p0: java.util.List): int + public method hashCode(): int + public static method hashCode-impl(p0: java.util.List): int + public synthetic bridge method indexOf(p0: java.lang.Object): int + public static method indexOf-jHY5zpA(p0: java.util.List, p1: long): int + public method indexOf-jHY5zpA(p0: long): int + public method isEmpty(): boolean + public static method isEmpty-impl(p0: java.util.List): boolean + public method iterator(): java.util.Iterator + public static method iterator-impl(p0: java.util.List): java.util.Iterator + public synthetic bridge method lastIndexOf(p0: java.lang.Object): int + public static method lastIndexOf-jHY5zpA(p0: java.util.List, p1: long): int + public method lastIndexOf-jHY5zpA(p0: long): int + public method listIterator(): java.util.ListIterator + public method listIterator(p0: int): java.util.ListIterator + public static method listIterator-impl(p0: java.util.List): 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 bridge final method remove(p0: int): long + public synthetic bridge method remove(p0: java.lang.Object): boolean + public static method remove-jHY5zpA(p0: java.util.List, p1: long): boolean + public method remove-jHY5zpA(p0: long): boolean + public method removeAll(p0: java.util.Collection): boolean + public static method removeAll-impl(p0: java.util.List, p1: java.util.Collection): boolean + public method removeAt-XAcLw3A(p0: int): long + public static method removeAt-XAcLw3A(p0: java.util.List, p1: int): long + public method retainAll(p0: java.util.Collection): boolean + public static method retainAll-impl(p0: java.util.List, p1: java.util.Collection): boolean + public synthetic bridge method set(p0: int, p1: java.lang.Object): java.lang.Object + public method set-_bimVNw(p0: int, p1: long): long + public static method set-_bimVNw(p0: java.util.List, p1: int, p2: long): long + public synthetic bridge method size(): int + public method subList(p0: int, p1: int): java.util.List + public static method subList-impl(p0: java.util.List, p1: int, p2: int): java.util.List + 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.List): java.lang.String + public synthetic final method unbox-impl(): java.util.List +} diff --git a/compiler/testData/codegen/bytecodeListing/specialBridges/abstractMutableCollectionOfPrimitive.kt b/compiler/testData/codegen/bytecodeListing/specialBridges/abstractMutableCollectionOfPrimitive.kt new file mode 100644 index 00000000000..8f978ecabfd --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/specialBridges/abstractMutableCollectionOfPrimitive.kt @@ -0,0 +1,3 @@ +// IGNORE_ANNOTATIONS + +abstract class MutableCollectionOfLong : MutableList \ No newline at end of file diff --git a/compiler/testData/codegen/bytecodeListing/specialBridges/abstractMutableCollectionOfPrimitive.txt b/compiler/testData/codegen/bytecodeListing/specialBridges/abstractMutableCollectionOfPrimitive.txt new file mode 100644 index 00000000000..3d62c931869 --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/specialBridges/abstractMutableCollectionOfPrimitive.txt @@ -0,0 +1,19 @@ +public abstract class MutableCollectionOfLong { + // source: 'abstractMutableCollectionOfPrimitive.kt' + public method (): void + public bridge final method contains(p0: java.lang.Object): boolean + public abstract method contains(p0: long): boolean + public abstract method getSize(): int + public bridge final method indexOf(p0: java.lang.Object): int + public abstract method indexOf(p0: long): int + public bridge final method lastIndexOf(p0: java.lang.Object): int + public abstract method lastIndexOf(p0: long): int + public synthetic bridge method remove(p0: int): java.lang.Object + public bridge final method remove(p0: int): long + public bridge final method remove(p0: java.lang.Object): boolean + public abstract method remove(p0: long): boolean + public abstract method removeAt(p0: int): java.lang.Long + public bridge final method size(): int + public method toArray(): java.lang.Object[] + public method toArray(p0: java.lang.Object[]): java.lang.Object[] +} diff --git a/compiler/testData/codegen/bytecodeListing/specialBridges/abstractMutableListOfPrimitive.kt b/compiler/testData/codegen/bytecodeListing/specialBridges/abstractMutableListOfPrimitive.kt new file mode 100644 index 00000000000..fadcf28d5e6 --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/specialBridges/abstractMutableListOfPrimitive.kt @@ -0,0 +1,3 @@ +// IGNORE_ANNOTATIONS + +abstract class MutableListOfLong : MutableList \ No newline at end of file diff --git a/compiler/testData/codegen/bytecodeListing/specialBridges/abstractMutableListOfPrimitive.txt b/compiler/testData/codegen/bytecodeListing/specialBridges/abstractMutableListOfPrimitive.txt new file mode 100644 index 00000000000..b2860567621 --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/specialBridges/abstractMutableListOfPrimitive.txt @@ -0,0 +1,19 @@ +public abstract class MutableListOfLong { + // source: 'abstractMutableListOfPrimitive.kt' + public method (): void + public bridge final method contains(p0: java.lang.Object): boolean + public abstract method contains(p0: long): boolean + public abstract method getSize(): int + public bridge final method indexOf(p0: java.lang.Object): int + public abstract method indexOf(p0: long): int + public bridge final method lastIndexOf(p0: java.lang.Object): int + public abstract method lastIndexOf(p0: long): int + public synthetic bridge method remove(p0: int): java.lang.Object + public bridge final method remove(p0: int): long + public bridge final method remove(p0: java.lang.Object): boolean + public abstract method remove(p0: long): boolean + public abstract method removeAt(p0: int): java.lang.Long + public bridge final method size(): int + public method toArray(): java.lang.Object[] + public method toArray(p0: java.lang.Object[]): java.lang.Object[] +} diff --git a/compiler/testData/codegen/bytecodeListing/specialBridges/abstractMutableLists_ir.txt b/compiler/testData/codegen/bytecodeListing/specialBridges/abstractMutableLists_ir.txt index 200e14b601c..eaafa58fc71 100644 --- a/compiler/testData/codegen/bytecodeListing/specialBridges/abstractMutableLists_ir.txt +++ b/compiler/testData/codegen/bytecodeListing/specialBridges/abstractMutableLists_ir.txt @@ -33,11 +33,11 @@ public abstract class AMLI { public bridge final method indexOf(p0: java.lang.Object): int public abstract method lastIndexOf(p0: int): int public bridge final method lastIndexOf(p0: java.lang.Object): int - public bridge final method remove(p0: int): java.lang.Integer + public bridge final method remove(p0: int): int public synthetic bridge method remove(p0: int): java.lang.Object public abstract method remove(p0: java.lang.Integer): boolean public bridge final method remove(p0: java.lang.Object): boolean - public abstract method removeAt(p0: int): int + public abstract method removeAt(p0: int): java.lang.Integer public bridge final method size(): int public method toArray(): java.lang.Object[] public method toArray(p0: java.lang.Object[]): java.lang.Object[] diff --git a/compiler/testData/codegen/bytecodeListing/specialBridges/mutableListOfPrimitive.kt b/compiler/testData/codegen/bytecodeListing/specialBridges/mutableListOfPrimitive.kt new file mode 100644 index 00000000000..5a20bfd0261 --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/specialBridges/mutableListOfPrimitive.kt @@ -0,0 +1,25 @@ +// IGNORE_ANNOTATIONS + +class MutableListOfLong(private val ml: MutableList) : MutableList { + override val size: Int get() = ml.size + override fun contains(element: Long): Boolean = ml.contains(element) + override fun containsAll(elements: Collection): Boolean = ml.containsAll(elements) + override fun get(index: Int): Long = ml.get(index) + override fun indexOf(element: Long): Int = ml.indexOf(element) + override fun isEmpty(): Boolean = ml.isEmpty() + override fun iterator(): MutableIterator = ml.iterator() + override fun lastIndexOf(element: Long): Int = ml.lastIndexOf(element) + override fun add(element: Long): Boolean = ml.add(element) + override fun add(index: Int, element: Long) = ml.add(index, element) + override fun addAll(index: Int, elements: Collection): Boolean = ml.addAll(index, elements) + override fun addAll(elements: Collection): Boolean = ml.addAll(elements) + override fun clear() = ml.clear() + override fun listIterator(): MutableListIterator = ml.listIterator() + override fun listIterator(index: Int): MutableListIterator = ml.listIterator(index) + override fun remove(element: Long): Boolean = ml.remove(element) + override fun removeAll(elements: Collection): Boolean = ml.removeAll(elements) + override fun removeAt(index: Int): Long = ml.removeAt(index) + override fun retainAll(elements: Collection): Boolean = ml.retainAll(elements) + override fun set(index: Int, element: Long): Long = ml.set(index, element) + override fun subList(fromIndex: Int, toIndex: Int): MutableList = ml.subList(fromIndex, toIndex) +} \ No newline at end of file diff --git a/compiler/testData/codegen/bytecodeListing/specialBridges/mutableListOfPrimitive.txt b/compiler/testData/codegen/bytecodeListing/specialBridges/mutableListOfPrimitive.txt new file mode 100644 index 00000000000..82003e285bb --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/specialBridges/mutableListOfPrimitive.txt @@ -0,0 +1,39 @@ +public final class MutableListOfLong { + // source: 'mutableListOfPrimitive.kt' + private final field ml: java.util.List + public method (p0: java.util.List): void + public synthetic bridge method add(p0: int, p1: java.lang.Object): void + public method add(p0: int, p1: long): void + public synthetic bridge method add(p0: java.lang.Object): boolean + public method add(p0: long): boolean + public method addAll(p0: int, p1: java.util.Collection): boolean + public method addAll(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(p0: java.util.Collection): boolean + public method get(p0: int): java.lang.Long + public synthetic bridge method get(p0: int): java.lang.Object + public method getSize(): int + public bridge final method indexOf(p0: java.lang.Object): int + public method indexOf(p0: long): int + public method isEmpty(): boolean + public method iterator(): java.util.Iterator + public bridge final method lastIndexOf(p0: java.lang.Object): int + public method lastIndexOf(p0: long): int + public method listIterator(): java.util.ListIterator + public method listIterator(p0: int): java.util.ListIterator + public synthetic bridge method remove(p0: int): java.lang.Object + public bridge final method remove(p0: int): long + public bridge final method remove(p0: java.lang.Object): boolean + public method remove(p0: long): boolean + public method removeAll(p0: java.util.Collection): boolean + public method removeAt(p0: int): java.lang.Long + public method retainAll(p0: java.util.Collection): boolean + public synthetic bridge method set(p0: int, p1: java.lang.Object): java.lang.Object + public method set(p0: int, p1: long): java.lang.Long + public bridge final method size(): int + public method subList(p0: int, p1: int): java.util.List + public method toArray(): java.lang.Object[] + public method toArray(p0: java.lang.Object[]): java.lang.Object[] +} diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeListingTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeListingTestGenerated.java index efb773c1651..73c1d4568d7 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeListingTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeListingTestGenerated.java @@ -679,11 +679,6 @@ public class BytecodeListingTestGenerated extends AbstractBytecodeListingTest { runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/constructorsWithDefaultParameterValues.kt"); } - @TestMetadata("inlineClassImplementingCollection.kt") - public void testInlineClassImplementingCollection() throws Exception { - runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineClassImplementingCollection.kt"); - } - @TestMetadata("inlineClassMembersVisibility.kt") public void testInlineClassMembersVisibility() throws Exception { runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineClassMembersVisibility.kt"); @@ -739,6 +734,89 @@ public class BytecodeListingTestGenerated extends AbstractBytecodeListingTest { runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/shapeOfInlineClassWithPrimitive.kt"); } + @TestMetadata("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class InlineCollection extends AbstractBytecodeListingTest { + private void runTest(String testDataFilePath) throws Exception { + KotlinTestUtils.runTest(this::doTest, this, testDataFilePath); + } + + public void testAllFilesPresentInInlineCollection() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection"), Pattern.compile("^(.+)\\.kt$"), null, true); + } + + @TestMetadata("collection.kt") + public void testCollection() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/collection.kt"); + } + + @TestMetadata("iterable.kt") + public void testIterable() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/iterable.kt"); + } + + @TestMetadata("iterator.kt") + public void testIterator() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/iterator.kt"); + } + + @TestMetadata("list.kt") + public void testList() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/list.kt"); + } + + @TestMetadata("map.kt") + public void testMap() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/map.kt"); + } + + @TestMetadata("mapEntry.kt") + public void testMapEntry() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mapEntry.kt"); + } + + @TestMetadata("mutableCollection.kt") + public void testMutableCollection() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableCollection.kt"); + } + + @TestMetadata("mutableIterable.kt") + public void testMutableIterable() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableIterable.kt"); + } + + @TestMetadata("mutableIterator.kt") + public void testMutableIterator() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableIterator.kt"); + } + + @TestMetadata("mutableList.kt") + public void testMutableList() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableList.kt"); + } + + @TestMetadata("mutableMap.kt") + public void testMutableMap() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableMap.kt"); + } + + @TestMetadata("mutableMapEntry.kt") + public void testMutableMapEntry() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableMapEntry.kt"); + } + + @TestMetadata("mutableSet.kt") + public void testMutableSet() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableSet.kt"); + } + + @TestMetadata("set.kt") + public void testSet() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/set.kt"); + } + } + @TestMetadata("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class) @@ -1027,6 +1105,16 @@ public class BytecodeListingTestGenerated extends AbstractBytecodeListingTest { runTest("compiler/testData/codegen/bytecodeListing/specialBridges/abstractListsWithJavaBase.kt"); } + @TestMetadata("abstractMutableCollectionOfPrimitive.kt") + public void testAbstractMutableCollectionOfPrimitive() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/specialBridges/abstractMutableCollectionOfPrimitive.kt"); + } + + @TestMetadata("abstractMutableListOfPrimitive.kt") + public void testAbstractMutableListOfPrimitive() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/specialBridges/abstractMutableListOfPrimitive.kt"); + } + @TestMetadata("abstractMutableLists.kt") public void testAbstractMutableLists() throws Exception { runTest("compiler/testData/codegen/bytecodeListing/specialBridges/abstractMutableLists.kt"); @@ -1051,6 +1139,11 @@ public class BytecodeListingTestGenerated extends AbstractBytecodeListingTest { runTest("compiler/testData/codegen/bytecodeListing/specialBridges/kt41123.kt"); } + @TestMetadata("mutableListOfPrimitive.kt") + public void testMutableListOfPrimitive() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/specialBridges/mutableListOfPrimitive.kt"); + } + @TestMetadata("noDefaultImplsOnEmptySubInterface.kt") public void testNoDefaultImplsOnEmptySubInterface() throws Exception { runTest("compiler/testData/codegen/bytecodeListing/specialBridges/noDefaultImplsOnEmptySubInterface.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBytecodeListingTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBytecodeListingTestGenerated.java index 9ee293b5e50..93a2b2116f9 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBytecodeListingTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBytecodeListingTestGenerated.java @@ -649,11 +649,6 @@ public class IrBytecodeListingTestGenerated extends AbstractIrBytecodeListingTes runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/constructorsWithDefaultParameterValues.kt"); } - @TestMetadata("inlineClassImplementingCollection.kt") - public void testInlineClassImplementingCollection() throws Exception { - runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineClassImplementingCollection.kt"); - } - @TestMetadata("inlineClassMembersVisibility.kt") public void testInlineClassMembersVisibility() throws Exception { runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineClassMembersVisibility.kt"); @@ -709,6 +704,89 @@ public class IrBytecodeListingTestGenerated extends AbstractIrBytecodeListingTes runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/shapeOfInlineClassWithPrimitive.kt"); } + @TestMetadata("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class InlineCollection extends AbstractIrBytecodeListingTest { + private void runTest(String testDataFilePath) throws Exception { + KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath); + } + + public void testAllFilesPresentInInlineCollection() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); + } + + @TestMetadata("collection.kt") + public void testCollection() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/collection.kt"); + } + + @TestMetadata("iterable.kt") + public void testIterable() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/iterable.kt"); + } + + @TestMetadata("iterator.kt") + public void testIterator() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/iterator.kt"); + } + + @TestMetadata("list.kt") + public void testList() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/list.kt"); + } + + @TestMetadata("map.kt") + public void testMap() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/map.kt"); + } + + @TestMetadata("mapEntry.kt") + public void testMapEntry() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mapEntry.kt"); + } + + @TestMetadata("mutableCollection.kt") + public void testMutableCollection() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableCollection.kt"); + } + + @TestMetadata("mutableIterable.kt") + public void testMutableIterable() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableIterable.kt"); + } + + @TestMetadata("mutableIterator.kt") + public void testMutableIterator() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableIterator.kt"); + } + + @TestMetadata("mutableList.kt") + public void testMutableList() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableList.kt"); + } + + @TestMetadata("mutableMap.kt") + public void testMutableMap() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableMap.kt"); + } + + @TestMetadata("mutableMapEntry.kt") + public void testMutableMapEntry() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableMapEntry.kt"); + } + + @TestMetadata("mutableSet.kt") + public void testMutableSet() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/mutableSet.kt"); + } + + @TestMetadata("set.kt") + public void testSet() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollection/set.kt"); + } + } + @TestMetadata("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class) @@ -997,6 +1075,16 @@ public class IrBytecodeListingTestGenerated extends AbstractIrBytecodeListingTes runTest("compiler/testData/codegen/bytecodeListing/specialBridges/abstractListsWithJavaBase.kt"); } + @TestMetadata("abstractMutableCollectionOfPrimitive.kt") + public void testAbstractMutableCollectionOfPrimitive() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/specialBridges/abstractMutableCollectionOfPrimitive.kt"); + } + + @TestMetadata("abstractMutableListOfPrimitive.kt") + public void testAbstractMutableListOfPrimitive() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/specialBridges/abstractMutableListOfPrimitive.kt"); + } + @TestMetadata("abstractMutableLists.kt") public void testAbstractMutableLists() throws Exception { runTest("compiler/testData/codegen/bytecodeListing/specialBridges/abstractMutableLists.kt"); @@ -1021,6 +1109,11 @@ public class IrBytecodeListingTestGenerated extends AbstractIrBytecodeListingTes runTest("compiler/testData/codegen/bytecodeListing/specialBridges/kt41123.kt"); } + @TestMetadata("mutableListOfPrimitive.kt") + public void testMutableListOfPrimitive() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/specialBridges/mutableListOfPrimitive.kt"); + } + @TestMetadata("noDefaultImplsOnEmptySubInterface.kt") public void testNoDefaultImplsOnEmptySubInterface() throws Exception { runTest("compiler/testData/codegen/bytecodeListing/specialBridges/noDefaultImplsOnEmptySubInterface.kt");