56 lines
1.4 KiB
Kotlin
Vendored
56 lines
1.4 KiB
Kotlin
Vendored
// IGNORE_BACKEND: WASM
|
|
// WASM_MUTE_REASON: IGNORED_IN_JS
|
|
// IGNORE_BACKEND: JS
|
|
// IGNORE_BACKEND: JS_IR
|
|
// IGNORE_BACKEND: JS_IR_ES6
|
|
|
|
open class Base {
|
|
open fun setup() {}
|
|
init { setup() }
|
|
}
|
|
|
|
val placeHolder = Any()
|
|
|
|
class Derived : Base {
|
|
constructor() : super()
|
|
override fun setup() {
|
|
xBool = true
|
|
xByte = 1.toByte()
|
|
xChar = 2.toChar()
|
|
xShort = 3.toShort()
|
|
xInt = 4
|
|
xLong = 5L
|
|
xFloat = 6.0f
|
|
xDouble = 7.0
|
|
xRef = placeHolder
|
|
}
|
|
|
|
// Technically, this field initializer comes after the superclass
|
|
// constructor is called. However, we optimize away field initializers
|
|
// which set fields to their default value, which is why x ends up with
|
|
// value 1 after the constructor call.
|
|
var xBool = false
|
|
var xByte = 0.toByte()
|
|
var xChar = 0.toChar()
|
|
var xShort = 0.toShort()
|
|
var xInt = 0
|
|
var xLong = 0L
|
|
var xFloat = 0.0f
|
|
var xDouble = 0.0
|
|
var xRef: Any? = null
|
|
}
|
|
|
|
fun box(): String {
|
|
val d = Derived()
|
|
if (d.xBool != true) return "fail Bool"
|
|
if (d.xByte != 1.toByte()) return "fail Byte"
|
|
if (d.xChar != 2.toChar()) return "fail Char"
|
|
if (d.xShort != 3.toShort()) return "fail Short"
|
|
if (d.xInt != 4) return "fail Int"
|
|
if (d.xLong != 5L) return "fail Long"
|
|
if (d.xFloat != 6.0f) return "fail Float"
|
|
if (d.xDouble != 7.0) return "fail Double"
|
|
if (d.xRef != placeHolder) return "fail Ref"
|
|
return "OK"
|
|
}
|