KT-5076 Error on inlining into object

#KT-5076 Fixed
This commit is contained in:
Mikhael Bogdanov
2014-05-23 11:17:42 +04:00
parent 0bd482d271
commit 950840b8c7
4 changed files with 59 additions and 21 deletions
@@ -4,9 +4,11 @@ abstract class A<R> {
abstract fun getO() : R
abstract fun getK() : R
abstract fun getParam() : R
}
inline fun <R> doWork(jobO: ()-> R, jobK: ()-> R) : A<R> {
inline fun <R> doWork(jobO: ()-> R, jobK: ()-> R, param: R) : A<R> {
val s = object : A<R>() {
override fun getO(): R {
@@ -15,12 +17,19 @@ inline fun <R> doWork(jobO: ()-> R, jobK: ()-> R) : A<R> {
override fun getK(): R {
return jobK()
}
override fun getParam(): R {
return param
}
}
return s;
}
inline fun <R> doWorkInConstructor(jobO: ()-> R, jobK: ()-> R) : A<R> {
inline fun <R> doWorkInConstructor(jobO: ()-> R, jobK: ()-> R, param: R) : A<R> {
val s = object : A<R>() {
val p = param;
val o1 = jobO()
val k1 = jobK()
@@ -31,6 +40,10 @@ inline fun <R> doWorkInConstructor(jobO: ()-> R, jobK: ()-> R) : A<R> {
override fun getK(): R {
return k1
}
override fun getParam(): R {
return p
}
}
return s;
}