Files
kotlin/compiler/testData/codegen/box/builtinStubMethods/Map.kt
Jiaxiang Chen afcbd76c9e Implement stub methods generation for Kotlin Immutable Collection classes.
This change is to fill the gap between Kotlin Collection
classes(immutable) and Java Collection classes(mutable), to avoid
calling an unsupported operation like remove() on an immutable class in
jvm.
2019-05-21 17:20:20 +03:00

34 lines
954 B
Kotlin
Vendored

// TARGET_BACKEND: JVM
class MyMap<K, V>: Map<K, V> {
override val size: Int get() = 0
override fun isEmpty(): Boolean = true
override fun containsKey(key: K): Boolean = false
override fun containsValue(value: V): Boolean = false
override fun get(key: K): V? = null
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 expectUoe(block: () -> Unit) {
try {
block()
throw AssertionError()
} catch (e: UnsupportedOperationException) {
}
}
fun box(): String {
val myMap = MyMap<String, Int>()
val map = myMap as java.util.Map<String, Int>
expectUoe { map.put("", 1) }
expectUoe { map.remove("") }
expectUoe { map.putAll(myMap) }
expectUoe { map.clear() }
return "OK"
}