| abstract class A1<Q> : MutableCollection<Q> { | |
| override fun contains(o: Q): Boolean { | |
| throw UnsupportedOperationException() | |
| } | |
| override fun containsAll(c: Collection<Q>): Boolean { | |
| throw UnsupportedOperationException() | |
| } | |
| } | |
| abstract class A2 : MutableCollection<String> { | |
| override fun contains(o: String): Boolean { | |
| throw UnsupportedOperationException() | |
| } | |
| override fun containsAll(c: Collection<String>): Boolean { | |
| throw UnsupportedOperationException() | |
| } | |
| } | |
| abstract class A3<W> : java.util.AbstractList<W>() | |
| abstract class A4<W> : java.util.AbstractList<W>() { | |
| override fun contains(o: W): Boolean { | |
| throw UnsupportedOperationException() | |
| } | |
| override fun containsAll(c: Collection<W>): Boolean { | |
| throw UnsupportedOperationException() | |
| } | |
| } | |
| abstract class A5 : java.util.AbstractList<String>() | |
| abstract class A6 : java.util.AbstractList<String>() { | |
| override fun contains(o: String): Boolean { | |
| throw UnsupportedOperationException() | |
| } | |
| override fun containsAll(c: Collection<String>): Boolean { | |
| throw UnsupportedOperationException() | |
| } | |
| } | |
| interface I1<R> : MutableSet<R> { | |
| override fun contains(o: R): Boolean { | |
| throw UnsupportedOperationException() | |
| } | |
| override fun containsAll(c: Collection<R>): Boolean { | |
| throw UnsupportedOperationException() | |
| } | |
| } | |
| interface I2 : MutableSet<String> { | |
| override fun contains(o: String): Boolean { | |
| throw UnsupportedOperationException() | |
| } | |
| override fun containsAll(c: Collection<String>): Boolean { | |
| throw UnsupportedOperationException() | |
| } | |
| } | |
| abstract class A7 : MutableCollection<Int> { | |
| override fun contains(o: Int): Boolean { | |
| throw UnsupportedOperationException() | |
| } | |
| } | |
| abstract class A8 : MutableCollection<Any?> { | |
| override fun contains(o: Any?): Boolean { | |
| throw UnsupportedOperationException() | |
| } | |
| } | |
| fun foo( | |
| a1: A1<String>, | |
| a2: A2, | |
| a3: A3<String>, | |
| a4: A4<String>, | |
| a5: A5, | |
| a6: A6, | |
| a7: A7, | |
| i1: I1<String>, | |
| i2: I2, | |
| c: Collection<String> | |
| ) { | |
| a1.contains("") | |
| a2.contains("") | |
| a3.contains("") | |
| a4.contains("") | |
| a5.contains("") | |
| a6.contains("") | |
| a7.contains(1) | |
| i1.contains("") | |
| i2.contains("") | |
| c.contains("") | |
| } | |
| /* | |
| * Calls to a1-a7, i1-i2, c in foo | |
| */ | |
| // 7 INVOKEVIRTUAL A[0-9]\.contains \(Ljava/lang/Object;\)Z | |
| // 1 INVOKEVIRTUAL A7\.contains \(I\)Z | |
| // 1 INVOKEINTERFACE java/util/Collection.contains \(Ljava/lang/Object;\)Z | |
| // 2 INVOKEINTERFACE I[1-2].contains \(Ljava/lang/Object;\)Z |