JVM: CHECK_BYTECODE_TEST directive + use it in INVOKEDYNAMIC tests
This commit is contained in:
committed by
TeamCityServer
parent
ca352c9556
commit
162363a324
@@ -4,6 +4,11 @@
|
||||
// JVM_TARGET: 1.8
|
||||
// LAMBDAS: INDY
|
||||
|
||||
// CHECK_BYTECODE_TEXT
|
||||
// JVM_IR_TEMPLATES
|
||||
// 0 java/lang/invoke/LambdaMetafactory
|
||||
// 1 class BigArityExtLambdaKt\$box\$1
|
||||
|
||||
fun test(
|
||||
extFn: Int.(
|
||||
p0: String, p1: String,
|
||||
@@ -21,4 +26,4 @@ fun box() =
|
||||
p20: Int, p21: Int, p22: Int
|
||||
->
|
||||
p0 + p1
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,11 @@
|
||||
// JVM_TARGET: 1.8
|
||||
// LAMBDAS: INDY
|
||||
|
||||
// CHECK_BYTECODE_TEXT
|
||||
// JVM_IR_TEMPLATES
|
||||
// 0 java/lang/invoke/LambdaMetafactory\.metafactory
|
||||
// 1 final class BigArityLambdaKt\$box\$1
|
||||
|
||||
fun box() =
|
||||
{ p0: String, p1: String, p2: Int, p3: Int, p4: Int, p5: Int, p6: Int, p7: Int, p8: Int, p9: Int,
|
||||
p10: Int, p11: Int, p12: Int, p13: Int, p14: Int, p15: Int, p16: Int, p17: Int, p18: Int, p19: Int,
|
||||
|
||||
+4
@@ -2,6 +2,10 @@
|
||||
// JVM_TARGET: 1.8
|
||||
// LAMBDAS: INDY
|
||||
|
||||
// CHECK_BYTECODE_TEXT
|
||||
// JVM_IR_TEMPLATES
|
||||
// 1 java/lang/invoke/LambdaMetafactory
|
||||
|
||||
class C(val x: String) {
|
||||
fun test() = { x }
|
||||
}
|
||||
|
||||
+4
@@ -2,6 +2,10 @@
|
||||
// JVM_TARGET: 1.8
|
||||
// LAMBDAS: INDY
|
||||
|
||||
// CHECK_BYTECODE_TEXT
|
||||
// JVM_IR_TEMPLATES
|
||||
// 1 java/lang/invoke/LambdaMetafactory
|
||||
|
||||
class C(val x: String)
|
||||
|
||||
fun C.test() = { x }
|
||||
|
||||
@@ -2,6 +2,10 @@
|
||||
// JVM_TARGET: 1.8
|
||||
// LAMBDAS: INDY
|
||||
|
||||
// CHECK_BYTECODE_TEXT
|
||||
// JVM_IR_TEMPLATES
|
||||
// 1 java/lang/invoke/LambdaMetafactory
|
||||
|
||||
fun box(): String {
|
||||
val ok = "OK"
|
||||
return { ok }()
|
||||
|
||||
@@ -2,6 +2,10 @@
|
||||
// JVM_TARGET: 1.8
|
||||
// LAMBDAS: INDY
|
||||
|
||||
// CHECK_BYTECODE_TEXT
|
||||
// JVM_IR_TEMPLATES
|
||||
// 1 java/lang/invoke/LambdaMetafactory
|
||||
|
||||
fun box(): String {
|
||||
var ok = "Failed"
|
||||
{ ok = "OK" }()
|
||||
|
||||
@@ -2,6 +2,10 @@
|
||||
// JVM_TARGET: 1.8
|
||||
// LAMBDAS: INDY
|
||||
|
||||
// CHECK_BYTECODE_TEXT
|
||||
// JVM_IR_TEMPLATES
|
||||
// 1 java/lang/invoke/LambdaMetafactory
|
||||
|
||||
class C(val x: String)
|
||||
|
||||
fun boxLambda(lambda: C.() -> String) = lambda
|
||||
|
||||
@@ -2,9 +2,14 @@
|
||||
// IGNORE_BACKEND: JVM
|
||||
// JVM_TARGET: 1.8
|
||||
// LAMBDAS: INDY
|
||||
|
||||
// CHECK_BYTECODE_LISTING
|
||||
// WITH_SIGNATURES
|
||||
|
||||
// CHECK_BYTECODE_TEXT
|
||||
// JVM_IR_TEMPLATES
|
||||
// 1 java/lang/invoke/LambdaMetafactory
|
||||
|
||||
fun <T1, R> call(value: T1, f: (T1) -> R): R {
|
||||
return f(value)
|
||||
}
|
||||
|
||||
Vendored
+5
@@ -2,6 +2,11 @@
|
||||
// JVM_TARGET: 1.8
|
||||
// LAMBDAS: INDY
|
||||
|
||||
// CHECK_BYTECODE_TEXT
|
||||
// JVM_IR_TEMPLATES
|
||||
// 0 java/lang/invoke/LambdaMetafactory
|
||||
// 1 class LambdaWithInlineAnyKt\$box\$t\$1
|
||||
|
||||
inline class Z(val value: Any)
|
||||
|
||||
fun foo1(fs: (Z) -> Z) = fs(Z(1))
|
||||
|
||||
Vendored
+4
@@ -2,6 +2,10 @@
|
||||
// JVM_TARGET: 1.8
|
||||
// LAMBDAS: INDY
|
||||
|
||||
// CHECK_BYTECODE_TEXT
|
||||
// JVM_IR_TEMPLATES
|
||||
// 1 java/lang/invoke/LambdaMetafactory
|
||||
|
||||
inline class Z(val value: Int)
|
||||
|
||||
fun foo1(fs: (Z) -> Z) = fs(Z(1))
|
||||
|
||||
Vendored
+4
@@ -2,6 +2,10 @@
|
||||
// JVM_TARGET: 1.8
|
||||
// LAMBDAS: INDY
|
||||
|
||||
// CHECK_BYTECODE_TEXT
|
||||
// JVM_IR_TEMPLATES
|
||||
// 1 java/lang/invoke/LambdaMetafactory
|
||||
|
||||
inline class Z(val value: Any?)
|
||||
|
||||
fun foo1(fs: (Z) -> Z) = fs(Z(1))
|
||||
|
||||
Vendored
+4
@@ -2,6 +2,10 @@
|
||||
// JVM_TARGET: 1.8
|
||||
// LAMBDAS: INDY
|
||||
|
||||
// CHECK_BYTECODE_TEXT
|
||||
// JVM_IR_TEMPLATES
|
||||
// 1 java/lang/invoke/LambdaMetafactory
|
||||
|
||||
inline class Z(val value: Int?)
|
||||
|
||||
fun foo1(fs: (Z) -> Z) = fs(Z(1))
|
||||
|
||||
+4
@@ -2,6 +2,10 @@
|
||||
// JVM_TARGET: 1.8
|
||||
// LAMBDAS: INDY
|
||||
|
||||
// CHECK_BYTECODE_TEXT
|
||||
// JVM_IR_TEMPLATES
|
||||
// 1 java/lang/invoke/LambdaMetafactory
|
||||
|
||||
inline class Z(val value: String?)
|
||||
|
||||
fun foo1(fs: (Z) -> Z) = fs(Z("O"))
|
||||
|
||||
compiler/testData/codegen/box/invokedynamic/lambdas/inlineClassInSignature/lambdaWithInlineString.kt
Vendored
+5
@@ -2,6 +2,11 @@
|
||||
// JVM_TARGET: 1.8
|
||||
// LAMBDAS: INDY
|
||||
|
||||
// CHECK_BYTECODE_TEXT
|
||||
// JVM_IR_TEMPLATES
|
||||
// 0 java/lang/invoke/LambdaMetafactory
|
||||
// 1 class LambdaWithInlineStringKt\$box\$t\$1
|
||||
|
||||
inline class Z(val value: String)
|
||||
|
||||
fun foo1(fs: (Z) -> Z) = fs(Z("O"))
|
||||
|
||||
@@ -4,10 +4,14 @@
|
||||
// LAMBDAS: INDY
|
||||
// FULL_JDK
|
||||
|
||||
// CHECK_BYTECODE_TEXT
|
||||
// JVM_IR_TEMPLATES
|
||||
// 1 java/lang/invoke/LambdaMetafactory
|
||||
|
||||
fun lambdaIsSerializable(fn: () -> Unit) = fn is java.io.Serializable
|
||||
|
||||
fun box(): String {
|
||||
if (lambdaIsSerializable {})
|
||||
return "Failed: indy lambdas should not be serializable"
|
||||
return "OK"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,10 @@
|
||||
// desugaring on Android
|
||||
// IGNORE_BACKEND: ANDROID
|
||||
|
||||
// CHECK_BYTECODE_TEXT
|
||||
// JVM_IR_TEMPLATES
|
||||
// 1 java/lang/invoke/LambdaMetafactory
|
||||
|
||||
fun lambdaToString(fn: () -> Unit) = fn.toString()
|
||||
|
||||
fun box(): String {
|
||||
@@ -14,4 +18,4 @@ fun box(): String {
|
||||
if (!str.startsWith("LambdaToStingKt"))
|
||||
return "Failed: indy lambda toString is inherited from java.lang.Object: $str"
|
||||
return "OK"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,4 +2,8 @@
|
||||
// JVM_TARGET: 1.8
|
||||
// LAMBDAS: INDY
|
||||
|
||||
// CHECK_BYTECODE_TEXT
|
||||
// JVM_IR_TEMPLATES
|
||||
// 3 java/lang/invoke/LambdaMetafactory
|
||||
|
||||
fun box() = { { "O" }() + { "K" }() }()
|
||||
|
||||
@@ -2,7 +2,12 @@
|
||||
// JVM_TARGET: 1.8
|
||||
// LAMBDAS: INDY
|
||||
// WITH_RUNTIME
|
||||
// CHECK_BYTECODE_TEXT
|
||||
|
||||
// FILE: nullabilityAssertions.kt
|
||||
// JVM_IR_TEMPLATES
|
||||
// 1 java/lang/invoke/LambdaMetafactory
|
||||
|
||||
fun box(): String {
|
||||
val fn: (String) -> String = { it }
|
||||
try {
|
||||
|
||||
+4
@@ -2,6 +2,10 @@
|
||||
// JVM_TARGET: 1.8
|
||||
// LAMBDAS: INDY
|
||||
|
||||
// CHECK_BYTECODE_TEXT
|
||||
// JVM_IR_TEMPLATES
|
||||
// 1 java/lang/invoke/LambdaMetafactory
|
||||
|
||||
fun box(): String {
|
||||
val test = { i: Int -> i + 40 }(2)
|
||||
if (test != 42) return "Failed: test=$test"
|
||||
|
||||
@@ -2,4 +2,8 @@
|
||||
// JVM_TARGET: 1.8
|
||||
// LAMBDAS: INDY
|
||||
|
||||
// CHECK_BYTECODE_TEXT
|
||||
// JVM_IR_TEMPLATES
|
||||
// 1 java/lang/invoke/LambdaMetafactory
|
||||
|
||||
fun box() = { "OK" }()
|
||||
|
||||
@@ -2,15 +2,20 @@
|
||||
// JVM_TARGET: 1.8
|
||||
// LAMBDAS: INDY
|
||||
// WITH_RUNTIME
|
||||
// WITH_COROUTINES
|
||||
|
||||
// CHECK_BYTECODE_TEXT
|
||||
// JVM_IR_TEMPLATES
|
||||
// 0 java/lang/invoke/LambdaMetafactory
|
||||
// 1 class SuspendLambdaKt\$box\$1
|
||||
|
||||
import kotlin.coroutines.*
|
||||
|
||||
var c: Continuation<Unit>? = null
|
||||
|
||||
suspend fun suspendMe() = suspendCoroutine<Unit> { continuation ->
|
||||
c = continuation
|
||||
}
|
||||
suspend fun suspendMe() =
|
||||
suspendCoroutine<Unit> { continuation ->
|
||||
c = continuation
|
||||
}
|
||||
|
||||
fun builder(c: suspend () -> Unit) {
|
||||
c.startCoroutine(object: Continuation<Unit> {
|
||||
|
||||
@@ -2,6 +2,10 @@
|
||||
// JVM_TARGET: 1.8
|
||||
// LAMBDAS: INDY
|
||||
|
||||
// CHECK_BYTECODE_TEXT
|
||||
// JVM_IR_TEMPLATES
|
||||
// 1 java/lang/invoke/LambdaMetafactory
|
||||
|
||||
var ok = "Failed"
|
||||
|
||||
fun box(): String {
|
||||
|
||||
Reference in New Issue
Block a user