[Gradle, JS] Fix delegates

#KT-37582 fixed
This commit is contained in:
Ilya Goncharov
2020-03-20 10:27:00 +03:00
parent 6605199ead
commit 41f5a56cb3
@@ -10,17 +10,19 @@ import kotlin.reflect.KProperty
open class ProviderDelegate<out T : Any>( open class ProviderDelegate<out T : Any>(
private val defaultValueProvider: () -> T private val defaultValueProvider: () -> T
) { ) {
protected open val backing: T? = null
operator fun getValue(thisRef: Any?, property: KProperty<*>): T { operator fun getValue(thisRef: Any?, property: KProperty<*>): T {
return backing ?: defaultValueProvider() return defaultValueProvider()
} }
} }
class PropertyDelegate<T : Any>( class PropertyDelegate<T : Any>(
defaultValueProvider: () -> T private val defaultValueProvider: () -> T
) : ProviderDelegate<T>(defaultValueProvider) { ) {
override var backing: T? = null private var backing: T? = null
operator fun getValue(thisRef: Any?, property: KProperty<*>): T {
return backing ?: defaultValueProvider()
}
operator fun setValue(thisRef: Any?, property: KProperty<*>, value: T) { operator fun setValue(thisRef: Any?, property: KProperty<*>, value: T) {
backing = value backing = value