febac0dd5f
^KT-65979
55 lines
1.1 KiB
Kotlin
Vendored
55 lines
1.1 KiB
Kotlin
Vendored
/*
|
|
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
|
* that can be found in the LICENSE file.
|
|
*/
|
|
// WITH_STDLIB
|
|
import kotlin.test.*
|
|
|
|
fun box(): String {
|
|
testCast(null, false)
|
|
testCastToNullable(null, true)
|
|
testCastToNullable(TestKlass(), true)
|
|
testCastToNullable("", false)
|
|
testCastNotNullableToNullable(TestKlass(), true)
|
|
testCastNotNullableToNullable("", false)
|
|
|
|
return "OK"
|
|
}
|
|
|
|
class TestKlass
|
|
|
|
fun ensure(b: Boolean) {
|
|
if (!b) {
|
|
throw Error("Error")
|
|
}
|
|
}
|
|
|
|
fun testCast(x: Any?, expectSuccess: Boolean) {
|
|
try {
|
|
x as TestKlass
|
|
} catch (e: Throwable) {
|
|
ensure(!expectSuccess)
|
|
return
|
|
}
|
|
ensure(expectSuccess)
|
|
}
|
|
|
|
fun testCastToNullable(x: Any?, expectSuccess: Boolean) {
|
|
try {
|
|
x as TestKlass?
|
|
} catch (e: Throwable) {
|
|
ensure(!expectSuccess)
|
|
return
|
|
}
|
|
ensure(expectSuccess)
|
|
}
|
|
|
|
fun testCastNotNullableToNullable(x: Any, expectSuccess: Boolean) {
|
|
try {
|
|
x as TestKlass?
|
|
} catch (e: Throwable) {
|
|
ensure(!expectSuccess)
|
|
return
|
|
}
|
|
ensure(expectSuccess)
|
|
} |