blob: a2dd8238d8ed42d1b8f6760318f9c27891624865 [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 accessors
class PropertyAccessorForInnerClass {
private var privateProp = "private"
private lateinit var privateLateInitProp: String
// Causes a class initializer to be added to the class.
companion object {
public var companionProperty = "static"
}
inner class Inner {
fun accessPrivateProperty() {
privateProp = "bar"
println(privateProp)
}
fun accessPrivateLateInitPropertyStatus() {
println(::privateLateInitProp.isInitialized)
}
}
}
fun noUseOfPropertyAccessorFromInnerClass() {
// Create instance of class to keep them after tree shaking.
PropertyAccessorForInnerClass().Inner()
}
fun usePrivatePropertyAccessorFromInnerClass() {
// Creates a non-trivial class initializer
println(PropertyAccessorForInnerClass.companionProperty)
PropertyAccessorForInnerClass().Inner().accessPrivateProperty()
}
fun usePrivateLateInitPropertyAccessorFromInnerClass() {
// Creates a non-trivial class initializer
println(PropertyAccessorForInnerClass.companionProperty)
PropertyAccessorForInnerClass().Inner().accessPrivateLateInitPropertyStatus()
}