[IR] Supported inlining of adapted references + tests
This commit is contained in:
+17
@@ -0,0 +1,17 @@
|
||||
// DONT_TARGET_EXACT_BACKEND: WASM
|
||||
// WASM_MUTE_REASON: BINDING_RECEIVERS
|
||||
|
||||
// FILE: 1.kt
|
||||
package test
|
||||
|
||||
inline fun foo(x: () -> Unit): String {
|
||||
x()
|
||||
return "OK"
|
||||
}
|
||||
|
||||
inline fun String.id(s: String = this, vararg xs: Int): String = s
|
||||
|
||||
// FILE: 2.kt
|
||||
import test.*
|
||||
|
||||
fun box(): String = foo("Fail"::id)
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
// DONT_TARGET_EXACT_BACKEND: WASM
|
||||
// WASM_MUTE_REASON: STDLIB_TEXT
|
||||
// !LANGUAGE: +NewInference +FunctionReferenceWithDefaultValueAsOtherType
|
||||
// WITH_RUNTIME
|
||||
// KJS_WITH_FULL_RUNTIME
|
||||
|
||||
// FILE: 1.kt
|
||||
package test
|
||||
|
||||
inline fun foo(mkString: () -> String): String =
|
||||
mkString()
|
||||
|
||||
inline fun bar (xs: CharArray = charArrayOf('O','K')) =
|
||||
String(xs)
|
||||
|
||||
// FILE: 2.kt
|
||||
import test.*
|
||||
|
||||
fun box(): String = foo(::bar)
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
// DONT_TARGET_EXACT_BACKEND: WASM
|
||||
// WASM_MUTE_REASON: IGNORED_IN_JS
|
||||
// !LANGUAGE: +NewInference
|
||||
|
||||
// FILE: 1.kt
|
||||
package test
|
||||
|
||||
inline fun foo(f: (Int, Int) -> Int): Int =
|
||||
f(42, 117)
|
||||
|
||||
inline fun bar (vararg xs: Int): Int {
|
||||
var sum = 0
|
||||
for (x in xs) sum += x
|
||||
return sum
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
import test.*
|
||||
|
||||
fun box(): String = if (foo(::bar) == 159) "OK" else "fail"
|
||||
Vendored
+14
@@ -0,0 +1,14 @@
|
||||
// !LANGUAGE: +NewInference +FunctionReferenceWithDefaultValueAsOtherType
|
||||
|
||||
// FILE: 1.kt
|
||||
package test
|
||||
|
||||
inline fun foo(vararg l: Long, s: String = "OK"): String =
|
||||
if (l.size == 0) s else "Fail"
|
||||
|
||||
inline fun bar(f: () -> String): String = f()
|
||||
|
||||
// FILE: 2.kt
|
||||
import test.*
|
||||
|
||||
fun box(): String = bar(::foo)
|
||||
Vendored
+18
@@ -0,0 +1,18 @@
|
||||
// !LANGUAGE: +NewInference
|
||||
// WITH_RUNTIME
|
||||
// KJS_WITH_FULL_RUNTIME
|
||||
|
||||
// FILE: 1.kt
|
||||
package test
|
||||
|
||||
inline fun foo(x: (Int, Int) -> Int): Int =
|
||||
x(120,3)
|
||||
|
||||
inline fun bar(vararg x: Int): Int =
|
||||
x.sum()
|
||||
|
||||
// FILE: 2.kt
|
||||
import test.*
|
||||
|
||||
fun box(): String =
|
||||
if (foo(::bar) == 123) "OK" else "FAIL"
|
||||
Reference in New Issue
Block a user