Make Throwable properties message and cause open.

#KT-5587 Fixed
This commit is contained in:
Ilya Gorbunov
2016-02-03 20:58:42 +03:00
parent f12c653aed
commit 5361f6e941
14 changed files with 68 additions and 41 deletions
+4 -4
View File
@@ -674,10 +674,10 @@ public open class Throwable {
public constructor Throwable(/*0*/ message: kotlin.String?)
/*primary*/ public constructor Throwable(/*0*/ message: kotlin.String?, /*1*/ cause: kotlin.Throwable?)
public constructor Throwable(/*0*/ cause: kotlin.Throwable?)
public final val cause: kotlin.Throwable?
public final fun <get-cause>(): kotlin.Throwable?
public final val message: kotlin.String?
public final fun <get-message>(): kotlin.String?
public open val cause: kotlin.Throwable?
public open fun <get-cause>(): kotlin.Throwable?
public open val message: kotlin.String?
public open fun <get-message>(): kotlin.String?
}
public object Unit {
@@ -0,0 +1,21 @@
class MyThrowable(message: String? = null, cause: Throwable? = null) : Throwable(message, cause) {
override val message: String?
get() = "My message: " + super.message
override val cause: Throwable?
get() = super.cause ?: this
}
fun box(): String {
try {
throw MyThrowable("test")
} catch (t: MyThrowable) {
if (t.cause != t) return "fail t.cause"
if (t.message != "My message: test") return "fail t.message"
return "OK"
}
return "fail: MyThrowable wasn't catched."
}
@@ -2,14 +2,14 @@ package test
public final class E1 : java.lang.Exception {
public constructor E1()
public final /*fake_override*/ val cause: kotlin.Throwable?
public final /*fake_override*/ val message: kotlin.String?
public open /*fake_override*/ val cause: kotlin.Throwable?
public open /*fake_override*/ val message: kotlin.String?
}
public final class E2 : java.lang.Exception {
public constructor E2()
public final /*fake_override*/ val cause: kotlin.Throwable?
public final /*fake_override*/ val message: kotlin.String?
public open /*fake_override*/ val cause: kotlin.Throwable?
public open /*fake_override*/ val message: kotlin.String?
}
public/*package*/ open class JavaClass {
@@ -2,14 +2,14 @@ package test
public final class E1 : java.lang.Exception {
public constructor E1()
public final /*fake_override*/ val cause: kotlin.Throwable?
public final /*fake_override*/ val message: kotlin.String?
public open /*fake_override*/ val cause: kotlin.Throwable?
public open /*fake_override*/ val message: kotlin.String?
}
public final class E2 : java.lang.Exception {
public constructor E2()
public final /*fake_override*/ val cause: kotlin.Throwable?
public final /*fake_override*/ val message: kotlin.String?
public open /*fake_override*/ val cause: kotlin.Throwable?
public open /*fake_override*/ val message: kotlin.String?
}
public/*package*/ open class JavaClass {
@@ -4,8 +4,8 @@ package test
public final class E1 : java.lang.Exception {
public constructor E1()
public final /*fake_override*/ val cause: kotlin.Throwable?
public final /*fake_override*/ val message: kotlin.String?
public open /*fake_override*/ val cause: kotlin.Throwable?
public open /*fake_override*/ val message: kotlin.String?
}
public/*package*/ open class JavaClass {
@@ -2,14 +2,14 @@ package test
public final class E1 : java.lang.Exception {
public constructor E1()
public final /*fake_override*/ val cause: kotlin.Throwable?
public final /*fake_override*/ val message: kotlin.String?
public open /*fake_override*/ val cause: kotlin.Throwable?
public open /*fake_override*/ val message: kotlin.String?
}
public final class E2 : java.lang.Exception {
public constructor E2()
public final /*fake_override*/ val cause: kotlin.Throwable?
public final /*fake_override*/ val message: kotlin.String?
public open /*fake_override*/ val cause: kotlin.Throwable?
public open /*fake_override*/ val message: kotlin.String?
}
public final class Impl : test.Trait {
@@ -11,8 +11,8 @@ public final class Derived : test.Base<kotlin.String> {
public final class E1 : java.lang.Exception {
public constructor E1()
public final /*fake_override*/ val cause: kotlin.Throwable?
public final /*fake_override*/ val message: kotlin.String?
public open /*fake_override*/ val cause: kotlin.Throwable?
public open /*fake_override*/ val message: kotlin.String?
}
public/*package*/ open class JavaClass {
@@ -6,14 +6,14 @@ public fun two(): kotlin.Unit
public final class E1 : java.lang.Exception {
public constructor E1()
public final /*fake_override*/ val cause: kotlin.Throwable?
public final /*fake_override*/ val message: kotlin.String?
public open /*fake_override*/ val cause: kotlin.Throwable?
public open /*fake_override*/ val message: kotlin.String?
}
public final class E2 : java.lang.Exception {
public constructor E2()
public final /*fake_override*/ val cause: kotlin.Throwable?
public final /*fake_override*/ val message: kotlin.String?
public open /*fake_override*/ val cause: kotlin.Throwable?
public open /*fake_override*/ val message: kotlin.String?
}
public/*package*/ open class JavaClass {
@@ -2,14 +2,14 @@ package test
public final class E1 : java.lang.Exception {
public constructor E1()
public final /*fake_override*/ val cause: kotlin.Throwable?
public final /*fake_override*/ val message: kotlin.String?
public open /*fake_override*/ val cause: kotlin.Throwable?
public open /*fake_override*/ val message: kotlin.String?
}
public final class E2 : java.lang.Exception {
public constructor E2()
public final /*fake_override*/ val cause: kotlin.Throwable?
public final /*fake_override*/ val message: kotlin.String?
public open /*fake_override*/ val cause: kotlin.Throwable?
public open /*fake_override*/ val message: kotlin.String?
}
public/*package*/ open class JavaClass {
@@ -5,8 +5,8 @@ public inline fun </*0*/ reified E : java.lang.Exception, /*1*/ R> tryCatch(/*0*
public final class XException</*0*/ T> : kotlin.Throwable {
public constructor XException</*0*/ T>(/*0*/ p: T)
public final override /*1*/ /*fake_override*/ val cause: kotlin.Throwable?
public final override /*1*/ /*fake_override*/ val message: kotlin.String?
public open override /*1*/ /*fake_override*/ val cause: kotlin.Throwable?
public open override /*1*/ /*fake_override*/ val message: kotlin.String?
public final val p: T
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
@@ -15,8 +15,8 @@ public final class XException</*0*/ T> : kotlin.Throwable {
public final class YException</*0*/ T> : java.lang.RuntimeException {
public constructor YException</*0*/ T>(/*0*/ p: T)
public final override /*1*/ /*fake_override*/ val cause: kotlin.Throwable?
public final override /*1*/ /*fake_override*/ val message: kotlin.String?
public open override /*1*/ /*fake_override*/ val cause: kotlin.Throwable?
public open override /*1*/ /*fake_override*/ val message: kotlin.String?
public final val p: T
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
@@ -25,8 +25,8 @@ public final class YException</*0*/ T> : java.lang.RuntimeException {
public final class ZException</*0*/ T> : java.lang.Exception {
public constructor ZException</*0*/ T>(/*0*/ p: T)
public final override /*1*/ /*fake_override*/ val cause: kotlin.Throwable?
public final override /*1*/ /*fake_override*/ val message: kotlin.String?
public open override /*1*/ /*fake_override*/ val cause: kotlin.Throwable?
public open override /*1*/ /*fake_override*/ val message: kotlin.String?
public final val p: T
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
+2 -2
View File
@@ -4,8 +4,8 @@ public fun </*0*/ T : kotlin.Any> T.getJavaClass(): java.lang.Class<T>
public final class IdUnavailableException : java.lang.Exception {
public constructor IdUnavailableException()
public final override /*1*/ /*fake_override*/ val cause: kotlin.Throwable?
public final override /*1*/ /*fake_override*/ val message: kotlin.String?
public open override /*1*/ /*fake_override*/ val cause: kotlin.Throwable?
public open override /*1*/ /*fake_override*/ val message: kotlin.String?
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
@@ -9,8 +9,8 @@ public fun test6(): kotlin.Unit
public final class A : java.lang.Exception {
public constructor A()
public final override /*1*/ /*fake_override*/ val cause: kotlin.Throwable?
public final override /*1*/ /*fake_override*/ val message: kotlin.String?
public open override /*1*/ /*fake_override*/ val cause: kotlin.Throwable?
public open override /*1*/ /*fake_override*/ val message: kotlin.String?
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
@@ -18,8 +18,8 @@ public final class A : java.lang.Exception {
public final class B : java.lang.Exception {
public constructor B()
public final override /*1*/ /*fake_override*/ val cause: kotlin.Throwable?
public final override /*1*/ /*fake_override*/ val message: kotlin.String?
public open override /*1*/ /*fake_override*/ val cause: kotlin.Throwable?
public open override /*1*/ /*fake_override*/ val message: kotlin.String?
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
@@ -7492,6 +7492,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
doTest(fileName);
}
@TestMetadata("throwableImpl.kt")
public void testThrowableImpl() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/specialBuiltins/throwableImpl.kt");
doTest(fileName);
}
@TestMetadata("valuesInsideEnum.kt")
public void testValuesInsideEnum() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/specialBuiltins/valuesInsideEnum.kt");
+1 -1
View File
@@ -22,7 +22,7 @@ package kotlin
* @param message the detail message string.
* @param cause the cause of this throwable.
*/
public open class Throwable(val message: String?, val cause: Throwable?) {
public open class Throwable(open val message: String?, open val cause: Throwable?) {
constructor(message: String?) : this(message, null)
constructor(cause: Throwable?) : this(cause?.toString(), cause)