blob: ebb87ccae47f539450dba52d80d912a75d9bc979 [file] [log] [blame]
// No initializers for this class because the fields/properties are initialized to defaults.
class RedundantInitializersToDefault {
companion object {
// Constants
const val constInt: Int = 0
const val constByte: Byte = 0
const val constLong: Long = 0L
const val constShort: Short = 0
const val constDouble: Double = 0.0
const val constFloat: Float = 0.0f
const val constBoolean: Boolean = false
const val constChar: Char = '\u0000'
}
// Properties
var myIntPropFromConst: Int = constInt
var myBytePropFromConst: Byte = constByte
var myLongPropFromConst: Long = constLong
var myShortPropFromConst: Short = constShort
var myDoublePropFromConst: Double = constDouble
var myFloatPropFromConst: Float = constFloat
var myBooleanPropFromConst: Boolean = constBoolean
var myCharPropFromConst: Char = constChar
var myIntProp: Int = 0
var myByteProp: Byte = 0
var myLongProp: Long = 0L
var myShortProp: Short = 0
var myDoubleProp: Double = 0.0
var myFloatProp: Float = 0.0f
var myBooleanProp: Boolean = false
var myCharProp: Char = '\u0000'
var myStringProp: String? = null
var myAnyProp: Any? = null
var myObjectProp: java.lang.Object? = null
var myIntegerProp: java.lang.Integer? = null
// Fields
@JvmField
var myIntFieldFromConst: Int = constInt
@JvmField
var myByteFieldFromConst: Byte = constByte
@JvmField
var myLongFieldFromConst: Long = constLong
@JvmField
var myShortFieldFromConst: Short = constShort
@JvmField
var myDoubleFieldFromConst: Double = constDouble
@JvmField
var myFloatFieldFromConst: Float = constFloat
@JvmField
var myBooleanFieldFromConst: Boolean = constBoolean
@JvmField
var myCharFieldFromConst: Char = constChar
@JvmField
var myIntField: Int = 0
@JvmField
var myByteField: Byte = 0
@JvmField
var myLongField: Long = 0L
@JvmField
var myShortField: Short = 0
@JvmField
var myDoubleField: Double = 0.0
@JvmField
var myFloatField: Float = 0.0f
@JvmField
var myBooleanField: Boolean = false
@JvmField
var myCharField: Char = '\u0000'
@JvmField
var myStringField: String? = null
@JvmField
var myAnyField: Any? = null
@JvmField
var myObjectField: java.lang.Object? = null
@JvmField
var myIntegerField: java.lang.Integer? = null
}
class NonRedundantInitializers {
// NOT redundant because the JVM's default values for floating-point types are positive 0.0.
// See: https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html#jvms-2.3
var myDouble: Double = -0.0
var myFloat: Float = -0.0f
}
// There are 20 PUTFIELDs in RedundantInitializersToDefault are in the setters for the 20 properties that don't have @JvmField.
// There are 2 PUTFIELDs in NonRedundantInitializers are also in setters, while the other 2 are in the constructor during initialization.
// There is 1 PUTSTATIC for the companion object instance.
// 20 PUTFIELD RedundantInitializersToDefault
// 4 PUTFIELD NonRedundantInitializers
// 1 PUTSTATIC