| // TARGET_BACKEND: JVM | |
| class MyCollection<T>: Collection<T> { | |
| override val size: Int get() = 0 | |
| override fun isEmpty(): Boolean = true | |
| override fun contains(o: T): Boolean = false | |
| override fun iterator(): Iterator<T> = throw UnsupportedOperationException() | |
| override fun containsAll(c: Collection<T>): Boolean = false | |
| override fun hashCode(): Int = 0 | |
| override fun equals(other: Any?): Boolean = false | |
| } | |
| fun expectUoe(block: () -> Any) { | |
| try { | |
| block() | |
| throw AssertionError() | |
| } catch (e: UnsupportedOperationException) { | |
| } | |
| } | |
| fun box(): String { | |
| val myCollection = MyCollection<String>() | |
| val collection = myCollection as java.util.Collection<String> | |
| expectUoe { collection.add("") } | |
| expectUoe { collection.remove("") } | |
| expectUoe { collection.addAll(myCollection) } | |
| expectUoe { collection.removeAll(myCollection) } | |
| expectUoe { collection.retainAll(myCollection) } | |
| expectUoe { collection.clear() } | |
| return "OK" | |
| } |