| // TARGET_BACKEND: JVM | |
| // FILE: J.java | |
| import java.util.*; | |
| public class J { | |
| private static class MyMap<K, V> extends KMap<K, V> {} | |
| public static String foo() { | |
| Map<String, Integer> collection = new MyMap<String, Integer>(); | |
| if (!collection.containsKey("ABCDE")) return "fail 1"; | |
| if (!collection.containsValue(1)) return "fail 2"; | |
| return "OK"; | |
| } | |
| } | |
| // FILE: test.kt | |
| open class KMap<K, V> : Map<K, V> { | |
| override val size: Int | |
| get() = throw UnsupportedOperationException() | |
| override fun isEmpty(): Boolean { | |
| throw UnsupportedOperationException() | |
| } | |
| override fun containsKey(key: K) = true | |
| override fun containsValue(value: V) = true | |
| override fun get(key: K): V? { | |
| throw UnsupportedOperationException() | |
| } | |
| override val keys: Set<K> | |
| get() = throw UnsupportedOperationException() | |
| override val values: Collection<V> | |
| get() = throw UnsupportedOperationException() | |
| override val entries: Set<Map.Entry<K, V>> | |
| get() = throw UnsupportedOperationException() | |
| } | |
| fun box() = J.foo() |