blob: 4422a29be04048e43fd8ec8d2cffc67c7bad71e5 [file] [log] [blame]
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