diff --git a/compiler/testData/codegen/bytecodeListing/collectionStubs/collectionsWithFullJdk.kt b/compiler/testData/codegen/bytecodeListing/collectionStubs/collectionsWithFullJdk.kt new file mode 100644 index 00000000000..16c9e12cd5f --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/collectionStubs/collectionsWithFullJdk.kt @@ -0,0 +1,18 @@ +// FULL_JDK +// See: KT-42114, KT-42115 + +abstract class AbstractIterator : Iterator + +abstract class AbstractIterable : Iterable + +abstract class AbstractCollection : Collection + +abstract class AbstractSet : Set + +abstract class AbstractList : List + +abstract class AbstractListIterator : ListIterator + +abstract class AbstractMap : Map + +abstract class AbstractMapEntry : Map.Entry diff --git a/compiler/testData/codegen/bytecodeListing/collectionStubs/collectionsWithFullJdk.txt b/compiler/testData/codegen/bytecodeListing/collectionStubs/collectionsWithFullJdk.txt new file mode 100644 index 00000000000..2e3012ebeaf --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/collectionStubs/collectionsWithFullJdk.txt @@ -0,0 +1,152 @@ +@kotlin.Metadata +public abstract class AbstractCollection { + // source: 'collectionsWithFullJdk.kt' + public method (): void + public synthetic method add(p0: java.lang.Object): boolean + public method add(p0: java.lang.String): boolean + public method addAll(p0: java.util.Collection): boolean + public method clear(): void + public bridge final method contains(p0: java.lang.Object): boolean + public abstract method contains(p0: java.lang.String): boolean + public abstract method getSize(): int + public method iterator(): java.util.Iterator + public method remove(p0: java.lang.Object): boolean + public method removeAll(p0: java.util.Collection): boolean + public method removeIf(p0: java.util.function.Predicate): 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[] +} + +@kotlin.Metadata +public abstract class AbstractIterable { + // source: 'collectionsWithFullJdk.kt' + public method (): void + public method iterator(): java.util.Iterator +} + +@kotlin.Metadata +public abstract class AbstractIterator { + // source: 'collectionsWithFullJdk.kt' + public method (): void + public method remove(): void +} + +@kotlin.Metadata +public abstract class AbstractList { + // source: 'collectionsWithFullJdk.kt' + public method (): void + public synthetic method add(p0: int, p1: java.lang.Object): void + public method add(p0: int, p1: java.lang.String): void + public synthetic method add(p0: java.lang.Object): boolean + public method add(p0: java.lang.String): 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 abstract method contains(p0: java.lang.String): boolean + public abstract method getSize(): int + public bridge final method indexOf(p0: java.lang.Object): int + public abstract method indexOf(p0: java.lang.String): int + public bridge final method lastIndexOf(p0: java.lang.Object): int + public abstract method lastIndexOf(p0: java.lang.String): int + public method listIterator(): java.util.ListIterator + public method listIterator(p0: int): java.util.ListIterator + public synthetic method remove(p0: int): java.lang.Object + public method remove(p0: int): java.lang.String + public method remove(p0: java.lang.Object): boolean + public method removeAll(p0: java.util.Collection): boolean + public method replaceAll(p0: java.util.function.UnaryOperator): void + public method retainAll(p0: java.util.Collection): boolean + public synthetic method set(p0: int, p1: java.lang.Object): java.lang.Object + public method set(p0: int, p1: java.lang.String): java.lang.String + public bridge final method size(): int + public method sort(p0: java.util.Comparator): void + 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[] +} + +@kotlin.Metadata +public abstract class AbstractListIterator { + // source: 'collectionsWithFullJdk.kt' + public method (): void + public synthetic method add(p0: java.lang.Object): void + public method add(p0: java.lang.String): void + public method hasNext(): boolean + public synthetic method next(): java.lang.Object + public method next(): java.lang.String + public method remove(): void + public synthetic method set(p0: java.lang.Object): void + public method set(p0: java.lang.String): void +} + +@kotlin.Metadata +public abstract class AbstractMap { + // source: 'collectionsWithFullJdk.kt' + public method (): void + public method clear(): void + public synthetic method compute(p0: java.lang.Object, p1: java.util.function.BiFunction): java.lang.Object + public method compute(p0: java.lang.String, p1: java.util.function.BiFunction): java.lang.Number + public synthetic method computeIfAbsent(p0: java.lang.Object, p1: java.util.function.Function): java.lang.Object + public method computeIfAbsent(p0: java.lang.String, p1: java.util.function.Function): java.lang.Number + public synthetic method computeIfPresent(p0: java.lang.Object, p1: java.util.function.BiFunction): java.lang.Object + public method computeIfPresent(p0: java.lang.String, p1: java.util.function.BiFunction): java.lang.Number + public bridge final method containsKey(p0: java.lang.Object): boolean + public abstract method containsKey(p0: java.lang.String): boolean + public abstract method containsValue(p0: java.lang.Number): boolean + public bridge final method containsValue(p0: java.lang.Object): boolean + public bridge final method entrySet(): java.util.Set + public bridge final method get(p0: java.lang.Object): java.lang.Object + public abstract method get(p0: java.lang.String): java.lang.Number + public abstract method getEntries(): java.util.Set + public abstract method getKeys(): java.util.Set + public abstract method getSize(): int + public abstract method getValues(): java.util.Collection + public bridge final method keySet(): java.util.Set + public synthetic method merge(p0: java.lang.Object, p1: java.lang.Object, p2: java.util.function.BiFunction): java.lang.Object + public method merge(p0: java.lang.String, p1: java.lang.Number, p2: java.util.function.BiFunction): java.lang.Number + public synthetic method put(p0: java.lang.Object, p1: java.lang.Object): java.lang.Object + public method put(p0: java.lang.String, p1: java.lang.Number): java.lang.Number + public method putAll(p0: java.util.Map): void + public synthetic method putIfAbsent(p0: java.lang.Object, p1: java.lang.Object): java.lang.Object + public method putIfAbsent(p0: java.lang.String, p1: java.lang.Number): java.lang.Number + public method remove(p0: java.lang.Object): java.lang.Object + public method remove(p0: java.lang.Object, p1: java.lang.Object): boolean + public synthetic method replace(p0: java.lang.Object, p1: java.lang.Object): java.lang.Object + public synthetic method replace(p0: java.lang.Object, p1: java.lang.Object, p2: java.lang.Object): boolean + public method replace(p0: java.lang.String, p1: java.lang.Number): java.lang.Number + public method replace(p0: java.lang.String, p1: java.lang.Number, p2: java.lang.Number): boolean + public method replaceAll(p0: java.util.function.BiFunction): void + public bridge final method size(): int + public bridge final method values(): java.util.Collection +} + +@kotlin.Metadata +public abstract class AbstractMapEntry { + // source: 'collectionsWithFullJdk.kt' + public method (): void + public method setValue(p0: java.lang.Number): java.lang.Number + public synthetic method setValue(p0: java.lang.Object): java.lang.Object +} + +@kotlin.Metadata +public abstract class AbstractSet { + // source: 'collectionsWithFullJdk.kt' + public method (): void + public synthetic method add(p0: java.lang.Object): boolean + public method add(p0: java.lang.String): boolean + public method addAll(p0: java.util.Collection): boolean + public method clear(): void + public bridge final method contains(p0: java.lang.Object): boolean + public abstract method contains(p0: java.lang.String): boolean + public abstract method getSize(): int + public method iterator(): java.util.Iterator + public method remove(p0: java.lang.Object): boolean + public method removeAll(p0: java.util.Collection): boolean + public method retainAll(p0: java.util.Collection): boolean + public bridge final method size(): int + public method toArray(): java.lang.Object[] + public method toArray(p0: java.lang.Object[]): java.lang.Object[] +} diff --git a/compiler/testData/codegen/bytecodeListing/collectionStubs/collectionsWithFullJdk_ir.txt b/compiler/testData/codegen/bytecodeListing/collectionStubs/collectionsWithFullJdk_ir.txt new file mode 100644 index 00000000000..edf75da654c --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/collectionStubs/collectionsWithFullJdk_ir.txt @@ -0,0 +1,153 @@ +@kotlin.Metadata +public abstract class AbstractCollection { + // source: 'collectionsWithFullJdk.kt' + public method (): void + public synthetic bridge method add(p0: java.lang.Object): boolean + public method add(p0: java.lang.String): boolean + public method addAll(p0: java.util.Collection): boolean + public method clear(): void + public bridge final method contains(p0: java.lang.Object): boolean + public abstract method contains(p0: java.lang.String): boolean + public abstract method getSize(): int + public method iterator(): java.util.Iterator + public method remove(p0: java.lang.Object): boolean + public method removeAll(p0: java.util.Collection): boolean + public method removeIf(p0: java.util.function.Predicate): 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[] +} + +@kotlin.Metadata +public abstract class AbstractIterable { + // source: 'collectionsWithFullJdk.kt' + public method (): void + public method iterator(): java.util.Iterator +} + +@kotlin.Metadata +public abstract class AbstractIterator { + // source: 'collectionsWithFullJdk.kt' + public method (): void + public method remove(): void +} + +@kotlin.Metadata +public abstract class AbstractList { + // source: 'collectionsWithFullJdk.kt' + public method (): void + public synthetic bridge method add(p0: int, p1: java.lang.Object): void + public method add(p0: int, p1: java.lang.String): void + public synthetic bridge method add(p0: java.lang.Object): boolean + public method add(p0: java.lang.String): 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 abstract method contains(p0: java.lang.String): boolean + public abstract method getSize(): int + public bridge final method indexOf(p0: java.lang.Object): int + public abstract method indexOf(p0: java.lang.String): int + public bridge final method lastIndexOf(p0: java.lang.Object): int + public abstract method lastIndexOf(p0: java.lang.String): 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 method remove(p0: int): java.lang.String + public method remove(p0: java.lang.Object): boolean + public method removeAll(p0: java.util.Collection): boolean + public method removeIf(p0: java.util.function.Predicate): boolean + public method replaceAll(p0: java.util.function.UnaryOperator): void + 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: java.lang.String): java.lang.String + public bridge final method size(): int + public method sort(p0: java.util.Comparator): void + 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[] +} + +@kotlin.Metadata +public abstract class AbstractListIterator { + // source: 'collectionsWithFullJdk.kt' + public method (): void + public synthetic bridge method add(p0: java.lang.Object): void + public method add(p0: java.lang.String): void + public method remove(): void + public synthetic bridge method set(p0: java.lang.Object): void + public method set(p0: java.lang.String): void +} + +@kotlin.Metadata +public abstract class AbstractMap { + // source: 'collectionsWithFullJdk.kt' + public method (): void + public method clear(): void + public synthetic bridge method compute(p0: java.lang.Object, p1: java.util.function.BiFunction): java.lang.Object + public method compute(p0: java.lang.String, p1: java.util.function.BiFunction): java.lang.Number + public synthetic bridge method computeIfAbsent(p0: java.lang.Object, p1: java.util.function.Function): java.lang.Object + public method computeIfAbsent(p0: java.lang.String, p1: java.util.function.Function): java.lang.Number + public synthetic bridge method computeIfPresent(p0: java.lang.Object, p1: java.util.function.BiFunction): java.lang.Object + public method computeIfPresent(p0: java.lang.String, p1: java.util.function.BiFunction): java.lang.Number + public bridge final method containsKey(p0: java.lang.Object): boolean + public abstract method containsKey(p0: java.lang.String): boolean + public abstract method containsValue(p0: java.lang.Number): boolean + public bridge final method containsValue(p0: java.lang.Object): boolean + public bridge final method entrySet(): java.util.Set + public bridge final method get(p0: java.lang.Object): java.lang.Number + public synthetic bridge method get(p0: java.lang.Object): java.lang.Object + public abstract method get(p0: java.lang.String): java.lang.Number + public abstract method getEntries(): java.util.Set + public abstract method getKeys(): java.util.Set + public abstract method getSize(): int + public abstract method getValues(): java.util.Collection + public bridge final method keySet(): java.util.Set + public synthetic bridge method merge(p0: java.lang.Object, p1: java.lang.Object, p2: java.util.function.BiFunction): java.lang.Object + public method merge(p0: java.lang.String, p1: java.lang.Number, p2: java.util.function.BiFunction): java.lang.Number + public synthetic bridge method put(p0: java.lang.Object, p1: java.lang.Object): java.lang.Object + public method put(p0: java.lang.String, p1: java.lang.Number): java.lang.Number + public method putAll(p0: java.util.Map): void + public synthetic bridge method putIfAbsent(p0: java.lang.Object, p1: java.lang.Object): java.lang.Object + public method putIfAbsent(p0: java.lang.String, p1: java.lang.Number): java.lang.Number + public method remove(p0: java.lang.Object): java.lang.Number + public synthetic bridge method remove(p0: java.lang.Object): java.lang.Object + public method remove(p0: java.lang.Object, p1: java.lang.Object): boolean + public synthetic bridge method replace(p0: java.lang.Object, p1: java.lang.Object): java.lang.Object + public synthetic bridge method replace(p0: java.lang.Object, p1: java.lang.Object, p2: java.lang.Object): boolean + public method replace(p0: java.lang.String, p1: java.lang.Number): java.lang.Number + public method replace(p0: java.lang.String, p1: java.lang.Number, p2: java.lang.Number): boolean + public method replaceAll(p0: java.util.function.BiFunction): void + public bridge final method size(): int + public bridge final method values(): java.util.Collection +} + +@kotlin.Metadata +public abstract class AbstractMapEntry { + // source: 'collectionsWithFullJdk.kt' + public method (): void + public method setValue(p0: java.lang.Number): java.lang.Number + public synthetic bridge method setValue(p0: java.lang.Object): java.lang.Object +} + +@kotlin.Metadata +public abstract class AbstractSet { + // source: 'collectionsWithFullJdk.kt' + public method (): void + public synthetic bridge method add(p0: java.lang.Object): boolean + public method add(p0: java.lang.String): boolean + public method addAll(p0: java.util.Collection): boolean + public method clear(): void + public bridge final method contains(p0: java.lang.Object): boolean + public abstract method contains(p0: java.lang.String): boolean + public abstract method getSize(): int + public method iterator(): java.util.Iterator + public method remove(p0: java.lang.Object): boolean + public method removeAll(p0: java.util.Collection): boolean + public method removeIf(p0: java.util.function.Predicate): 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[] +} diff --git a/compiler/testData/codegen/bytecodeListing/specialBridges/contains.kt b/compiler/testData/codegen/bytecodeListing/specialBridges/contains.kt index 3c5ee143624..f05c357bffb 100644 --- a/compiler/testData/codegen/bytecodeListing/specialBridges/contains.kt +++ b/compiler/testData/codegen/bytecodeListing/specialBridges/contains.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR abstract class A1 : MutableCollection { override fun contains(o: Q): Boolean { throw UnsupportedOperationException() diff --git a/compiler/testData/codegen/bytecodeListing/specialBridges/contains_ir.txt b/compiler/testData/codegen/bytecodeListing/specialBridges/contains_ir.txt new file mode 100644 index 00000000000..f8f8427bedd --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/specialBridges/contains_ir.txt @@ -0,0 +1,144 @@ +@kotlin.Metadata +public abstract class A1 { + // source: 'contains.kt' + public method (): void + public method contains(p0: java.lang.Object): boolean + public method containsAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean + public abstract method getSize(): int + public bridge final method size(): int + public method toArray(): java.lang.Object[] + public method toArray(p0: java.lang.Object[]): java.lang.Object[] +} + +@kotlin.Metadata +public abstract class A2 { + // source: 'contains.kt' + public method (): void + public method contains(@org.jetbrains.annotations.NotNull p0: java.lang.String): boolean + public bridge final method contains(p0: java.lang.Object): boolean + public method containsAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean + public abstract method getSize(): int + public bridge final method remove(p0: java.lang.Object): boolean + public abstract method remove(p0: java.lang.String): boolean + public bridge final method size(): int + public method toArray(): java.lang.Object[] + public method toArray(p0: java.lang.Object[]): java.lang.Object[] +} + +@kotlin.Metadata +public abstract class A3 { + // source: 'contains.kt' + public method (): void + public abstract method getSize(): int + public bridge final method remove(p0: int): java.lang.Object + public bridge method removeAt(p0: int): java.lang.Object + public bridge final method size(): int +} + +@kotlin.Metadata +public abstract class A4 { + // source: 'contains.kt' + public method (): void + public method contains(p0: java.lang.Object): boolean + public method containsAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean + public abstract method getSize(): int + public bridge final method remove(p0: int): java.lang.Object + public bridge method removeAt(p0: int): java.lang.Object + public bridge final method size(): int +} + +@kotlin.Metadata +public abstract class A5 { + // source: 'contains.kt' + public method (): void + public bridge final method contains(p0: java.lang.Object): boolean + public bridge method contains(p0: java.lang.String): boolean + public abstract method getSize(): int + public bridge final method indexOf(p0: java.lang.Object): int + public bridge method indexOf(p0: java.lang.String): int + public bridge final method lastIndexOf(p0: java.lang.Object): int + public bridge method lastIndexOf(p0: java.lang.String): int + public synthetic bridge method remove(p0: int): java.lang.Object + public bridge final method remove(p0: int): java.lang.String + public bridge final method remove(p0: java.lang.Object): boolean + public bridge method remove(p0: java.lang.String): boolean + public bridge method removeAt(p0: int): java.lang.String + public bridge final method size(): int +} + +@kotlin.Metadata +public abstract class A6 { + // source: 'contains.kt' + public method (): void + public method contains(@org.jetbrains.annotations.NotNull p0: java.lang.String): boolean + public bridge final method contains(p0: java.lang.Object): boolean + public method containsAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean + public abstract method getSize(): int + public bridge final method indexOf(p0: java.lang.Object): int + public bridge method indexOf(p0: java.lang.String): int + public bridge final method lastIndexOf(p0: java.lang.Object): int + public bridge method lastIndexOf(p0: java.lang.String): int + public synthetic bridge method remove(p0: int): java.lang.Object + public bridge final method remove(p0: int): java.lang.String + public bridge final method remove(p0: java.lang.Object): boolean + public bridge method remove(p0: java.lang.String): boolean + public bridge method removeAt(p0: int): java.lang.String + public bridge final method size(): int +} + +@kotlin.Metadata +public abstract class A7 { + // source: 'contains.kt' + public method (): void + public method contains(p0: int): boolean + public bridge final method contains(p0: java.lang.Object): boolean + public abstract method getSize(): int + public abstract method remove(p0: java.lang.Integer): boolean + public bridge final method remove(p0: java.lang.Object): boolean + public bridge final method size(): int + public method toArray(): java.lang.Object[] + public method toArray(p0: java.lang.Object[]): java.lang.Object[] +} + +@kotlin.Metadata +public abstract class A8 { + // source: 'contains.kt' + public method (): void + public method contains(@org.jetbrains.annotations.Nullable p0: java.lang.Object): boolean + public abstract method getSize(): int + public bridge final method size(): int + public method toArray(): java.lang.Object[] + public method toArray(p0: java.lang.Object[]): java.lang.Object[] +} + +@kotlin.Metadata +public final class I1$DefaultImpls { + // source: 'contains.kt' + public static method contains(@org.jetbrains.annotations.NotNull p0: I1, p1: java.lang.Object): boolean + public static method containsAll(@org.jetbrains.annotations.NotNull p0: I1, @org.jetbrains.annotations.NotNull p1: java.util.Collection): boolean + public final inner class I1$DefaultImpls +} + +@kotlin.Metadata +public interface I1 { + // source: 'contains.kt' + public abstract method contains(p0: java.lang.Object): boolean + public abstract method containsAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean + public final inner class I1$DefaultImpls +} + +@kotlin.Metadata +public final class I2$DefaultImpls { + // source: 'contains.kt' + public static method contains(@org.jetbrains.annotations.NotNull p0: I2, @org.jetbrains.annotations.NotNull p1: java.lang.String): boolean + public static method containsAll(@org.jetbrains.annotations.NotNull p0: I2, @org.jetbrains.annotations.NotNull p1: java.util.Collection): boolean + public final inner class I2$DefaultImpls +} + +@kotlin.Metadata +public interface I2 { + // source: 'contains.kt' + public abstract method contains(@org.jetbrains.annotations.NotNull p0: java.lang.String): boolean + public abstract method containsAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean + public final inner class I2$DefaultImpls +} diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeListingTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeListingTestGenerated.java index 2a0d3138ed5..0b4fa3d2af0 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeListingTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeListingTestGenerated.java @@ -229,6 +229,11 @@ public class BytecodeListingTestGenerated extends AbstractBytecodeListingTest { KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/bytecodeListing/collectionStubs"), Pattern.compile("^(.+)\\.kt$"), null, true); } + @TestMetadata("collectionsWithFullJdk.kt") + public void testCollectionsWithFullJdk() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/collectionStubs/collectionsWithFullJdk.kt"); + } + @TestMetadata("customListIterator.kt") public void testCustomListIterator() throws Exception { runTest("compiler/testData/codegen/bytecodeListing/collectionStubs/customListIterator.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBytecodeListingTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBytecodeListingTestGenerated.java index b3f2f96aaed..03262345b1a 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBytecodeListingTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBytecodeListingTestGenerated.java @@ -229,6 +229,11 @@ public class IrBytecodeListingTestGenerated extends AbstractIrBytecodeListingTes KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/bytecodeListing/collectionStubs"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); } + @TestMetadata("collectionsWithFullJdk.kt") + public void testCollectionsWithFullJdk() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/collectionStubs/collectionsWithFullJdk.kt"); + } + @TestMetadata("customListIterator.kt") public void testCustomListIterator() throws Exception { runTest("compiler/testData/codegen/bytecodeListing/collectionStubs/customListIterator.kt");