Obtain reification marker on default lambda extraction.

Add reification tests.
This commit is contained in:
Mikhael Bogdanov
2017-05-12 13:37:47 +02:00
parent 47c5e64ba5
commit 309051bd21
11 changed files with 234 additions and 9 deletions
@@ -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 T> inlineFun2(): String {
return inlineFun<OK>()
}
// FILE: 2.kt
import test.*
fun box(): String {
return inlineFun2<FAIL>()
}
@@ -0,0 +1,19 @@
// FILE: 1.kt
// SKIP_INLINE_CHECK_IN: inlineFun$default
//WITH_RUNTIME
package test
@Suppress("NOT_YET_SUPPORTED_IN_INLINE")
inline fun <reified T> inlineFun(p: String, lambda: () -> String = { { p + T::class.java.simpleName } () }): String {
return lambda()
}
// FILE: 2.kt
import test.*
class K
fun box(): String {
return inlineFun<OK>("O")
}
@@ -0,0 +1,21 @@
// FILE: 1.kt
// SKIP_INLINE_CHECK_IN: inlineFun$default
//WITH_RUNTIME
package test
@Suppress("NOT_YET_SUPPORTED_IN_INLINE")
inline fun <reified T> inlineFun(p: String, crossinline lambda: () -> String = { { p + T::class.java.simpleName } () }): String {
return {
lambda()
} ()
}
// FILE: 2.kt
import test.*
class OK
fun box(): String {
return inlineFun<OK>()
}
@@ -0,0 +1,21 @@
// FILE: 1.kt
// SKIP_INLINE_CHECK_IN: inlineFun$default
//WITH_RUNTIME
package test
@Suppress("NOT_YET_SUPPORTED_IN_INLINE")
inline fun <reified T> inlineFun(crossinline lambda: () -> String = { { T::class.java.simpleName } () }): String {
return {
lambda()
} ()
}
// FILE: 2.kt
import test.*
class OK
fun box(): String {
return inlineFun<OK>()
}
@@ -0,0 +1,19 @@
// FILE: 1.kt
// SKIP_INLINE_CHECK_IN: inlineFun$default
//WITH_RUNTIME
package test
@Suppress("NOT_YET_SUPPORTED_IN_INLINE")
inline fun <reified T> inlineFun(lambda: () -> String = { { T::class.java.simpleName } () }): String {
return lambda()
}
// FILE: 2.kt
import test.*
class OK
fun box(): String {
return inlineFun<OK>()
}
@@ -0,0 +1,19 @@
// FILE: 1.kt
// SKIP_INLINE_CHECK_IN: inlineFun$default
//WITH_RUNTIME
package test
@Suppress("NOT_YET_SUPPORTED_IN_INLINE")
inline fun <reified T> inlineFun(lambda: () -> String = { T::class.java.simpleName }): String {
return lambda()
}
// FILE: 2.kt
import test.*
class OK
fun box(): String {
return inlineFun<OK>()
}