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
This commit is contained in:
Alexander Udalov
2021-02-03 15:03:30 +01:00
parent 17fc10a8af
commit 73aa465ee9
31 changed files with 826 additions and 0 deletions
@@ -0,0 +1,41 @@
// 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()
}