Add new tests for default lambda inlining
This commit is contained in:
Vendored
+23
@@ -0,0 +1,23 @@
|
||||
// FILE: 1.kt
|
||||
// LANGUAGE_VERSION: 1.2
|
||||
// SKIP_INLINE_CHECK_IN: inlineFun$default
|
||||
package test
|
||||
|
||||
class A(val value: String) {
|
||||
|
||||
inner class Inner {
|
||||
fun ok() = value
|
||||
}
|
||||
}
|
||||
|
||||
inline fun inlineFun(a: A, lambda: () -> A.Inner = a::Inner): A.Inner {
|
||||
return lambda()
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
|
||||
import test.*
|
||||
|
||||
fun box(): String {
|
||||
return inlineFun(A("OK")).ok()
|
||||
}
|
||||
Vendored
+18
@@ -0,0 +1,18 @@
|
||||
// FILE: 1.kt
|
||||
// LANGUAGE_VERSION: 1.2
|
||||
// SKIP_INLINE_CHECK_IN: inlineFun$default
|
||||
package test
|
||||
|
||||
private fun ok() = "OK"
|
||||
|
||||
internal inline fun inlineFun(lambda: () -> String = ::ok): String {
|
||||
return lambda()
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
|
||||
import test.*
|
||||
|
||||
fun box(): String {
|
||||
return inlineFun()
|
||||
}
|
||||
Vendored
+18
@@ -0,0 +1,18 @@
|
||||
// FILE: 1.kt
|
||||
// LANGUAGE_VERSION: 1.2
|
||||
// SKIP_INLINE_CHECK_IN: inlineFun$default
|
||||
package test
|
||||
|
||||
private val ok = "OK"
|
||||
|
||||
internal inline fun inlineFun(lambda: () -> String = ::ok): String {
|
||||
return lambda()
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
|
||||
import test.*
|
||||
|
||||
fun box(): String {
|
||||
return inlineFun()
|
||||
}
|
||||
+5
-5
@@ -3,24 +3,24 @@
|
||||
|
||||
inline fun inlineFun(lambda: () -> String) = lambda()
|
||||
|
||||
inline fun noInlineFun(lambda: () -> String) = lambda()
|
||||
fun noInlineFun(lambda: () -> String) = lambda()
|
||||
|
||||
|
||||
inline fun default0_1(lambda: () -> String, dlambda: () -> String = { <!NOT_SUPPORTED_USAGE_OF_INLINE_PARAMETER_IN_DEFAULT_INLINE_ONE!>lambda<!>; "OK" }) {
|
||||
inline fun default0_1(lambda: () -> String, dlambda: () -> String = { <!NOT_SUPPORTED_INLINE_PARAMETER_IN_INLINE_PARAMETER_DEFAULT_VALUE!>lambda<!>; "OK" }) {
|
||||
lambda() + dlambda()
|
||||
}
|
||||
|
||||
inline fun default0_2(lambda: () -> String, dlambda: () -> String = { noInlineFun (<!NOT_SUPPORTED_USAGE_OF_INLINE_PARAMETER_IN_DEFAULT_INLINE_ONE, NOT_SUPPORTED_USAGE_OF_INLINE_PARAMETER_IN_DEFAULT_INLINE_ONE!>lambda<!>) }) {
|
||||
inline fun default0_2(lambda: () -> String, dlambda: () -> String = { noInlineFun (<!NOT_SUPPORTED_INLINE_PARAMETER_IN_INLINE_PARAMETER_DEFAULT_VALUE, NOT_SUPPORTED_INLINE_PARAMETER_IN_INLINE_PARAMETER_DEFAULT_VALUE!>lambda<!>) }) {
|
||||
lambda() + dlambda()
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline fun default0(lambda: () -> String, dlambda: () -> String = { noInlineFun (<!NOT_SUPPORTED_USAGE_OF_INLINE_PARAMETER_IN_DEFAULT_INLINE_ONE, NOT_SUPPORTED_USAGE_OF_INLINE_PARAMETER_IN_DEFAULT_INLINE_ONE!>lambda<!>) }) {
|
||||
inline fun default0(lambda: () -> String, dlambda: () -> String = { noInlineFun (<!NOT_SUPPORTED_INLINE_PARAMETER_IN_INLINE_PARAMETER_DEFAULT_VALUE, NOT_SUPPORTED_INLINE_PARAMETER_IN_INLINE_PARAMETER_DEFAULT_VALUE!>lambda<!>) }) {
|
||||
lambda() + dlambda()
|
||||
}
|
||||
|
||||
inline fun default1_0(lambda: () -> String, dlambda: () -> String = { <!NON_LOCAL_RETURN_NOT_ALLOWED, NOT_SUPPORTED_USAGE_OF_INLINE_PARAMETER_IN_DEFAULT_INLINE_ONE!>lambda<!>() }) {
|
||||
inline fun default1_0(lambda: () -> String, dlambda: () -> String = { <!NON_LOCAL_RETURN_NOT_ALLOWED, NOT_SUPPORTED_INLINE_PARAMETER_IN_INLINE_PARAMETER_DEFAULT_VALUE!>lambda<!>() }) {
|
||||
lambda() + dlambda()
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -13,4 +13,4 @@ public inline fun default2_1crossinline(/*0*/ crossinline lambda: () -> kotlin.S
|
||||
public inline fun default2_2(/*0*/ noinline lambda: () -> kotlin.String, /*1*/ dlambda: () -> kotlin.String = ...): kotlin.Unit
|
||||
public inline fun default2_3(/*0*/ noinline lambda: () -> kotlin.String, /*1*/ noinline dlambda: () -> kotlin.String = ...): kotlin.Unit
|
||||
public inline fun inlineFun(/*0*/ lambda: () -> kotlin.String): kotlin.String
|
||||
public inline fun noInlineFun(/*0*/ lambda: () -> kotlin.String): kotlin.String
|
||||
public fun noInlineFun(/*0*/ lambda: () -> kotlin.String): kotlin.String
|
||||
|
||||
+2
-2
@@ -3,14 +3,14 @@
|
||||
|
||||
inline fun inlineFun(lambda: () -> String) = lambda()
|
||||
|
||||
inline fun noInlineFun(lambda: () -> String) = lambda()
|
||||
fun noInlineFun(lambda: () -> String) = lambda()
|
||||
|
||||
|
||||
inline fun default0_1(lambda: () -> String, <!NOT_YET_SUPPORTED_IN_INLINE!>dlambda: () -> String = { <!USAGE_IS_NOT_INLINABLE, TYPE_MISMATCH!>lambda<!> }<!>) {
|
||||
lambda() + dlambda()
|
||||
}
|
||||
|
||||
inline fun default0_2(lambda: () -> String, <!NOT_YET_SUPPORTED_IN_INLINE!>dlambda: () -> String = { noInlineFun (<!NON_LOCAL_RETURN_NOT_ALLOWED!>lambda<!>) }<!>) {
|
||||
inline fun default0_2(lambda: () -> String, <!NOT_YET_SUPPORTED_IN_INLINE!>dlambda: () -> String = { noInlineFun (<!USAGE_IS_NOT_INLINABLE!>lambda<!>) }<!>) {
|
||||
lambda() + dlambda()
|
||||
}
|
||||
|
||||
|
||||
Vendored
+1
-1
@@ -13,4 +13,4 @@ public inline fun default2_1crossinline(/*0*/ crossinline lambda: () -> kotlin.S
|
||||
public inline fun default2_2(/*0*/ noinline lambda: () -> kotlin.String, /*1*/ dlambda: () -> kotlin.String = ...): kotlin.Unit
|
||||
public inline fun default2_3(/*0*/ noinline lambda: () -> kotlin.String, /*1*/ noinline dlambda: () -> kotlin.String = ...): kotlin.Unit
|
||||
public inline fun inlineFun(/*0*/ lambda: () -> kotlin.String): kotlin.String
|
||||
public inline fun noInlineFun(/*0*/ lambda: () -> kotlin.String): kotlin.String
|
||||
public fun noInlineFun(/*0*/ lambda: () -> kotlin.String): kotlin.String
|
||||
|
||||
Reference in New Issue
Block a user