blob: 41c8ab2ef9aa94a59249a82afc00d89c0b2ace50 [file] [log] [blame]
// Copyright (c) 2018, the R8 project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
package properties
open class LateInitProperty {
private lateinit var privateLateInitProp: String
protected lateinit var protectedLateInitProp: String
internal lateinit var internalLateInitProp: String
public lateinit var publicLateInitProp: String
fun callSetterPrivateLateInitProp(v: String) {
privateLateInitProp = v
}
fun callGetterPrivateLateInitProp(): String {
return privateLateInitProp
}
}
class SubLateInitProperty: LateInitProperty() {
fun callSetterProtectedLateInitProp(v: String) {
protectedLateInitProp = v
}
fun callGetterProtectedLateInitProp(): String {
return protectedLateInitProp
}
}
fun lateInitProperty_noUseOfProperties() {
LateInitProperty()
println("DONE")
}
fun lateInitProperty_usePrivateLateInitProp() {
val obj = LateInitProperty()
obj.callSetterPrivateLateInitProp("foo")
println(obj.callGetterPrivateLateInitProp())
}
fun lateInitProperty_useProtectedLateInitProp() {
val obj = SubLateInitProperty()
obj.callSetterProtectedLateInitProp("foo")
println(obj.callGetterProtectedLateInitProp())
}
fun lateInitProperty_useInternalLateInitProp() {
val obj = LateInitProperty()
obj.internalLateInitProp = "foo"
println(obj.internalLateInitProp)
}
fun lateInitProperty_usePublicLateInitProp() {
val obj = LateInitProperty()
obj.publicLateInitProp = "foo"
println(obj.publicLateInitProp)
}