| // TARGET_BACKEND: JVM |
| // WITH_STDLIB |
| // FILE: removeClashJava.kt |
| class Queue<T>() : Collection<T> { |
| override val size: Int = 1 |
| override fun contains(element: T): Boolean = TODO() |
| override fun containsAll(elements: Collection<T>): Boolean = TODO() |
| override fun isEmpty(): Boolean = TODO() |
| override fun iterator(): Iterator<T> = TODO() |
| |
| fun remove(v: Any?): Any? = v |
| } |
| |
| fun box(): String { |
| val q = Queue<String>() |
| J.testRemove(q) |
| return q.remove("OK") as String |
| } |
| |
| // FILE: J.java |
| import java.util.Collection; |
| |
| public class J { |
| public static void testRemove(Collection<String> c) { |
| try { |
| c.remove(""); |
| throw new AssertionError("c.remove(...) should throw UnsupportedOperationException"); |
| } catch (UnsupportedOperationException e) { |
| } catch (Throwable e) { |
| throw new AssertionError("c.remove(...) should throw UnsupportedOperationException"); |
| } |
| } |
| } |