62 lines
2.0 KiB
Kotlin
Vendored
62 lines
2.0 KiB
Kotlin
Vendored
// TARGET_BACKEND: JVM
|
|
// WITH_STDLIB
|
|
|
|
// See also: KT-42083
|
|
|
|
var removed = ""
|
|
|
|
class MyCharSequenceSet1 : Set<CharSequence> {
|
|
override val size: Int get() = TODO()
|
|
override fun contains(element: CharSequence): Boolean = TODO()
|
|
override fun containsAll(elements: Collection<CharSequence>): Boolean = TODO()
|
|
override fun isEmpty(): Boolean = TODO()
|
|
override fun iterator(): Iterator<CharSequence> = TODO()
|
|
|
|
fun <Q : CharSequence> remove(cs: Q): Boolean {
|
|
removed = cs.toString()
|
|
return false
|
|
}
|
|
}
|
|
|
|
class MyCharSequenceSet2 : Set<CharSequence> {
|
|
override val size: Int get() = TODO()
|
|
override fun contains(element: CharSequence): Boolean = TODO()
|
|
override fun containsAll(elements: Collection<CharSequence>): Boolean = TODO()
|
|
override fun isEmpty(): Boolean = TODO()
|
|
override fun iterator(): Iterator<CharSequence> = TODO()
|
|
|
|
fun <Q : CharSequence> remove(cs: Q?): Boolean {
|
|
removed = cs.toString()
|
|
return false
|
|
}
|
|
}
|
|
|
|
fun box(): String {
|
|
val s1 = MyCharSequenceSet1()
|
|
s1.remove("OK")
|
|
if (removed != "OK") throw AssertionError()
|
|
|
|
try {
|
|
(s1 as java.util.Set<CharSequence>).remove("OK")
|
|
throw AssertionError("(s1 as java.util.Set<CharSequence>) should throw UnsupportedOperationException")
|
|
} catch (e: UnsupportedOperationException) {
|
|
} catch (e: Throwable) {
|
|
throw AssertionError("(s1 as java.util.Set<CharSequence>) should throw UnsupportedOperationException")
|
|
}
|
|
|
|
removed = ""
|
|
|
|
val s2 = MyCharSequenceSet2()
|
|
s2.remove("OK")
|
|
if (removed != "OK") throw AssertionError()
|
|
|
|
try {
|
|
(s2 as java.util.Set<CharSequence>).remove("OK")
|
|
throw AssertionError("(s2 as java.util.Set<CharSequence>) should throw UnsupportedOperationException")
|
|
} catch (e: UnsupportedOperationException) {
|
|
} catch (e: Throwable) {
|
|
throw AssertionError("(s2 as java.util.Set<CharSequence>) should throw UnsupportedOperationException")
|
|
}
|
|
|
|
return "OK"
|
|
} |