Fix for KT-5910: Can't call Throwable() in Kotlin

#KT-5910 Fixed
This commit is contained in:
Michael Bogdanov
2015-12-14 15:38:07 +03:00
parent d40e9ffc13
commit ca9e8fc5a7
6 changed files with 98 additions and 2 deletions
+22
View File
@@ -0,0 +1,22 @@
fun box(): String {
val s: String? = "OK"
val t: Throwable? = Throwable("test", null)
val z = Throwable(s, t)
if (z.message !== s) return "fail 1: ${z.message}"
if (z.cause !== t) return "fail 2: ${z.cause}"
val z2 = Throwable(s)
if (z2.message !== s) return "fail 3: ${z2.message}"
if (z2.cause !== null) return "fail 4: ${z2.cause}"
val z3 = Throwable(t)
if (z3.message != "java.lang.Throwable: test") return "fail 5: ${z3.message}"
if (z3.cause !== t) return "fail 6: ${z2.cause}"
val z4 = Throwable()
if (z4.message !== null) return "fail 7: ${z4.message}"
if (z4.cause !== null) return "fail 8: ${z4.cause}"
return z.message!!
}
@@ -0,0 +1,30 @@
import kotlin.reflect.KFunction2
import kotlin.reflect.KFunction1
import kotlin.reflect.KFunction0
fun box(): String {
val s: String? = "OK"
val t: Throwable? = Throwable("test", null)
var thr1: KFunction2<String?, Throwable?, Throwable> = ::Throwable
val z = thr1(s, t)
if (z.message !== s) return "fail 1: ${z.message}"
if (z.cause !== t) return "fail 2: ${z.cause}"
var thr2: KFunction1<String?, Throwable> = ::Throwable
val z2 = thr2(s)
if (z2.message !== s) return "fail 3: ${z2.message}"
if (z2.cause !== null) return "fail 4: ${z2.cause}"
var thr3: KFunction1<Throwable?, Throwable> = ::Throwable
val z3 = thr3(t)
if (z3.message != "java.lang.Throwable: test") return "fail 5: ${z3.message}"
if (z3.cause !== t) return "fail 6: ${z2.cause}"
var thr4: KFunction0<Throwable> = ::Throwable
val z4 = thr4()
if (z4.message !== null) return "fail 7: ${z4.message}"
if (z4.cause !== null) return "fail 8: ${z4.cause}"
return z.message!!
}
@@ -0,0 +1,17 @@
var res = ""
fun getM(): String {
res += "M"
return "OK"
}
fun getT(): Throwable {
res += "T"
return Throwable("test", null)
}
fun box(): String {
val z = Throwable(cause = getT(), message = getM())
if (res != "TM") return "Wrong argument calculation order: $res"
return z.message!!
}