Files
kotlin-fork/compiler/testData/codegen/box/callableReference/bound/genericBoundPropertyAsCrossinline.kt
T
Alexander Udalov 73aa465ee9 Add tests for issues fixed in JVM IR
Note that KT-30696 is fixed only in the single-module case, and KT-42012
is not fixed fully (see KT-44855).

 #KT-30041
 #KT-30629
 #KT-30696
 #KT-30933
 #KT-32351
 #KT-32749
 #KT-38849
 #KT-42012
 #KT-42990
 #KT-44234
 #KT-44529
 #KT-44631
 #KT-44647
2021-02-10 21:42:10 +01:00

42 lines
1023 B
Kotlin
Vendored

// IGNORE_BACKEND: JVM
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: BINDING_RECEIVERS
// KT-30629
abstract class BaseFragment<T : BaseViewModel> {
lateinit var viewModel: T
open fun onActivityCreated(): String {
viewModel = retrieveViewModel()
return "Fail"
}
abstract fun retrieveViewModel(): T
}
class DerivedFragment : BaseFragment<DerivedViewModel>() {
override fun onActivityCreated(): String {
super.onActivityCreated()
return bind(viewModel::property)
}
override fun retrieveViewModel(): DerivedViewModel = DerivedViewModel()
inline fun <T> bind(crossinline viewModelGet: () -> T?): String {
return setOnFocusChangeListener { viewModelGet() as String }
}
fun setOnFocusChangeListener(l: () -> String): String {
return l()
}
}
abstract class BaseViewModel
class DerivedViewModel : BaseViewModel() {
var property: String? = "OK"
}
fun box(): String {
return DerivedFragment().onActivityCreated()
}