Move JVM8 box test to common

This commit is contained in:
Mikhael Bogdanov
2018-10-16 11:06:27 +02:00
parent b61608aba7
commit ac8e1a0124
110 changed files with 0 additions and 0 deletions
@@ -0,0 +1,34 @@
// !API_VERSION: 1.3
// !JVM_DEFAULT_MODE: enable
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_RUNTIME
// FULL_JDK
// There should be no DefaultImpls method for MutableMap.remove(K;V)
interface A<K, V> : MutableMap<K, V>
class B : A<String, String>, java.util.AbstractMap<String, String>() {
override val entries: MutableSet<MutableMap.MutableEntry<String, String>>
get() = java.util.HashSet()
}
interface C<K, V> : MutableMap<K, V> {
@JvmDefault
override fun remove(key: K, value: V) = true
}
class D : A<String, String>, java.util.AbstractMap<String, String>() {
override val entries: MutableSet<MutableMap.MutableEntry<String, String>>
get() = java.util.HashSet()
}
fun box(): String {
val x1 = B().remove("1", "2")
if (x1) return "fail 1"
val x2 = D().remove("3", "4")
if (x1) return "fail 2"
return "OK"
}
@@ -0,0 +1,46 @@
// TARGET_BACKEND: JVM
// FULL_JDK
// WITH_RUNTIME
// FILE: A.java
public class A {
public static void foo(java.util.Map<String, String> x) {
x.remove("abc", "cde");
}
}
// FILE: main.kt
class ReadOnlyMap<K, V>(val x: K, val y: V) : Map<K, V> {
override val entries: Set<Map.Entry<K, V>>
get() = throw UnsupportedOperationException()
override val keys: Set<K>
get() = throw UnsupportedOperationException()
override val size: Int
get() = throw UnsupportedOperationException()
override val values: Collection<V>
get() = throw UnsupportedOperationException()
override fun containsKey(key: K) = key == x
override fun containsValue(value: V) = value == y
override fun get(key: K): V? = if (key == x) y else null
override fun isEmpty() = false
}
fun box(): String {
try {
A.foo(ReadOnlyMap("abc", "cde"))
return "fail 1"
} catch (e: UnsupportedOperationException) { }
try {
// Default Map 'remove' implenetation actually does remove iff entry exists
A.foo(ReadOnlyMap("abc", "123"))
return "fail 2"
} catch (e: UnsupportedOperationException) { }
return "OK"
}
@@ -0,0 +1,69 @@
// TARGET_BACKEND: JVM
// FULL_JDK
// WITH_RUNTIME
class A : MutableMap<String, String> {
override val entries: MutableSet<MutableMap.MutableEntry<String, String>>
get() = throw UnsupportedOperationException()
override val keys: MutableSet<String>
get() = throw UnsupportedOperationException()
override val values: MutableCollection<String>
get() = throw UnsupportedOperationException()
override fun clear() {
throw UnsupportedOperationException()
}
override fun put(key: String, value: String): String? {
throw UnsupportedOperationException()
}
override fun putAll(from: Map<out String, String>) {
throw UnsupportedOperationException()
}
override fun remove(key: String): String? {
throw UnsupportedOperationException()
}
override val size: Int
get() = throw UnsupportedOperationException()
override fun containsKey(key: String): Boolean {
throw UnsupportedOperationException()
}
override fun containsValue(value: String): Boolean {
throw UnsupportedOperationException()
}
override fun get(key: String): String? {
throw UnsupportedOperationException()
}
override fun isEmpty(): Boolean {
throw UnsupportedOperationException()
}
override fun remove(key: String, value: String): Boolean {
val h = key.hashCode() + value.hashCode()
if (h != ("abc".hashCode() + "cde".hashCode())) return false
return key == "abc" && value == "cde"
}
}
fun box(): String {
val a = A()
if (!a.remove("abc", "cde")) return "fail 1"
if (a.remove("abc", "123")) return "fail 2"
val mm = a as MutableMap<Any?, Any?>
if (!mm.remove("abc", "cde")) return "fail 3"
if (mm.remove("abc", "123")) return "fail 4"
if (mm.remove(1, "cde")) return "fail 5"
if (mm.remove(null, "cde")) return "fail 6"
if (mm.remove("abc", null)) return "fail 7"
if (mm.remove(null, null)) return "fail 8"
return "OK"
}
@@ -0,0 +1,69 @@
// TARGET_BACKEND: JVM
// FULL_JDK
// WITH_RUNTIME
class A : MutableMap<Any, Any> {
override val entries: MutableSet<MutableMap.MutableEntry<Any, Any>>
get() = throw UnsupportedOperationException()
override val keys: MutableSet<Any>
get() = throw UnsupportedOperationException()
override val values: MutableCollection<Any>
get() = throw UnsupportedOperationException()
override fun clear() {
throw UnsupportedOperationException()
}
override fun put(key: Any, value: Any): Any? {
throw UnsupportedOperationException()
}
override fun putAll(from: Map<out Any, Any>) {
throw UnsupportedOperationException()
}
override fun remove(key: Any): Any? {
throw UnsupportedOperationException()
}
override val size: Int
get() = throw UnsupportedOperationException()
override fun containsKey(key: Any): Boolean {
throw UnsupportedOperationException()
}
override fun containsValue(value: Any): Boolean {
throw UnsupportedOperationException()
}
override fun get(key: Any): Any? {
throw UnsupportedOperationException()
}
override fun isEmpty(): Boolean {
throw UnsupportedOperationException()
}
override fun remove(key: Any, value: Any): Boolean {
val h = key.hashCode() + value.hashCode()
if (h != ("abc".hashCode() + "cde".hashCode())) return false
return key == "abc" && value == "cde"
}
}
fun box(): String {
val a = A()
if (!a.remove("abc", "cde")) return "fail 1"
if (a.remove("abc", "123")) return "fail 2"
val mm = a as MutableMap<Any?, Any?>
if (!mm.remove("abc", "cde")) return "fail 3"
if (mm.remove("abc", "123")) return "fail 4"
if (mm.remove(1, "cde")) return "fail 5"
if (mm.remove(null, "cde")) return "fail 6"
if (mm.remove("abc", null)) return "fail 7"
if (mm.remove(null, null)) return "fail 8"
return "OK"
}