Fix for KT-7544: Backend fails when inlining nested calls with reified type parameter and default value parameter

#KT-7544 Fixed
This commit is contained in:
Michael Bogdanov
2015-04-22 15:45:14 +03:00
parent 72648d305e
commit 53b8a1d56e
20 changed files with 234 additions and 30 deletions
@@ -0,0 +1,8 @@
//NO_CHECK_LAMBDA_INLINING
import test.*
val x: () -> String = foo<String>()
fun box(): String {
return x()
}
@@ -0,0 +1,9 @@
package test
inline fun <reified R> foo() = bar<R>() {"OK"}
inline fun <reified E> bar(inlineOptions(InlineOption.ONLY_LOCAL_RETURN) y: () -> String) = {
null is E
run(y)
}
public inline fun <T> call(f: () -> T): T = f()
@@ -0,0 +1,8 @@
//NO_CHECK_LAMBDA_INLINING
import test.*
inline fun <reified R> foo() = bar<R, String>() {"OK"}
fun box(): String {
return foo<String>()()
}
@@ -0,0 +1,9 @@
package test
inline fun <reified R, T> bar(inlineOptions(InlineOption.ONLY_LOCAL_RETURN) tasksFactory: () -> T) = {
null is R
run(tasksFactory)
}
public inline fun <T> call(f: () -> T): T = f()