Generic types may not extend kotlin.Throwable #KT-9816 Fixed

This commit is contained in:
Mikhail Glukhikh
2015-11-30 12:05:23 +03:00
parent c6be69a483
commit de37cb8f40
5 changed files with 38 additions and 11 deletions
@@ -1,15 +1,11 @@
// See KT-9816, KT-9742
// Not allowed in Java
open class ZException<T>(val p: T) : Exception()
class ZException<!GENERIC_THROWABLE_SUBCLASS!><T><!>(val p: T) : Exception()
fun foo(): String {
try {
throw ZException(11)
} catch (e: ZException<String>) {
return e.p
}
}
class YException<!GENERIC_THROWABLE_SUBCLASS!><T><!>(val p: T): java.lang.RuntimeException()
class XException<!GENERIC_THROWABLE_SUBCLASS!><T><!>(val p: T): Throwable()
fun bar() {
try {
@@ -1,10 +1,31 @@
package
public fun bar(): kotlin.Unit
public fun foo(): kotlin.String
public inline fun </*0*/ reified E : java.lang.Exception, /*1*/ R> tryCatch(/*0*/ lazy: () -> R, /*1*/ failure: (E) -> R): R
public open class ZException</*0*/ T> : java.lang.Exception {
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 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
public final override /*1*/ /*fake_override*/ fun printStackTrace(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
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 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
public final override /*1*/ /*fake_override*/ fun printStackTrace(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
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?