blob: 28bed0a0756e933fabaf2c7006473285d72f66d0 [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 PropertyAccessorForLambda {
private var property: String = "foo"
get() = { field }()
set(v) = { field = v }()
// Causes a class initializer to be added to the class.
companion object {
public var companionProperty = "static"
}
fun accessPropertyOfOuterClass() {
// Access to the property requires to go through an accessor method, respectively
// named "access$getProperty$lp" for getter and "access$setProperty$lp" for setter).
property = "bar"
println(property)
}
}
fun noUseOfPropertyAccessorFromLambda() {
// Create instance of class to keep them after tree shaking.
PropertyAccessorForLambda()
}
fun usePropertyAccessorFromLambda() {
PropertyAccessorForLambda.companionProperty = "fake"
PropertyAccessorForLambda().accessPropertyOfOuterClass()
}