| abstract class A { | |
| abstract val x: Any | |
| init { | |
| castX(this) | |
| } | |
| } | |
| class B : A() { | |
| override val x: Any = "abc" | |
| } | |
| fun castX(a: A) { | |
| a.x as String | |
| } | |
| fun box(): String { | |
| try { | |
| B() | |
| } catch (e: NullPointerException) { | |
| return "OK" | |
| } catch (e: ClassCastException) { | |
| return "OK" // JS | |
| } | |
| return "Failed: should throw NPE" | |
| } |