Support default inline lambda reification

This commit is contained in:
Mikhael Bogdanov
2017-05-15 11:57:06 +02:00
parent 9e8495dc3d
commit 6730fa2bbf
10 changed files with 96 additions and 14 deletions
@@ -9,11 +9,11 @@ inline fun <reified T> inlineFun(p: String, lambda: () -> String = { { p + T::cl
}
// FILE: 2.kt
//NO_CHECK_LAMBDA_INLINING
import test.*
class K
fun box(): String {
return inlineFun<OK>("O")
return inlineFun<K>("O")
}
@@ -14,8 +14,8 @@ inline fun <reified T> inlineFun(p: String, crossinline lambda: () -> String = {
import test.*
class OK
class K
fun box(): String {
return inlineFun<OK>()
return inlineFun<K>("O")
}
@@ -9,7 +9,7 @@ inline fun <reified T> inlineFun(lambda: () -> String = { { T::class.java.simple
}
// FILE: 2.kt
//NO_CHECK_LAMBDA_INLINING
import test.*
class OK
@@ -0,0 +1,23 @@
// FILE: 1.kt
// SKIP_INLINE_CHECK_IN: inlineFun$default
//WITH_RUNTIME
package test
class K
@Suppress("NOT_YET_SUPPORTED_IN_INLINE")
inline fun <reified T> inlineFun(p: String, lambda: () -> String = { p + T::class.java.simpleName }): String {
return lambda()
}
inline fun <reified X> inlineFun2(p: String): String {
return inlineFun<X>(p)
}
// FILE: 2.kt
import test.*
fun box(): String {
return inlineFun2<K>("O")
}
@@ -0,0 +1,26 @@
// FILE: 1.kt
// SKIP_INLINE_CHECK_IN: inlineFun$default
//WITH_RUNTIME
package test
class OK
class FAIL
@Suppress("NOT_YET_SUPPORTED_IN_INLINE")
inline fun <reified T> inlineFun(lambda: () -> String = { T::class.java.simpleName }): String {
return lambda()
}
inline fun <reified X> inlineFun2(): String {
return inlineFun<X>()
}
// FILE: 2.kt
import test.*
fun box(): String {
return inlineFun2<OK>()
}