KT-45375 Lightweight lambdas; KT-52817 introduce @JvmSerializableLambda
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
// LAMBDAS: CLASS
|
||||
// IGNORE_BACKEND: WASM
|
||||
// WASM_MUTE_REASON: IGNORED_IN_JS
|
||||
// IGNORE_BACKEND: JS_IR
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// LAMBDAS: CLASS
|
||||
// IGNORE_BACKEND: WASM
|
||||
// WASM_MUTE_REASON: IGNORED_IN_JS
|
||||
// IGNORE_BACKEND: JS_IR
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
// LANGUAGE: +LightweightLambdas
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
// JVM_TARGET: 1.8
|
||||
// FULL_JDK
|
||||
// WITH_STDLIB
|
||||
|
||||
import kotlin.test.assertTrue
|
||||
|
||||
fun box(): String {
|
||||
assertTrue((@kotlin.jvm.JvmSerializableLambda {}) is java.io.Serializable)
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
// LANGUAGE: +LightweightLambdas
|
||||
// !OPT_IN: kotlin.reflect.jvm.ExperimentalReflectionOnLambdas
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
// JVM_TARGET: 1.8
|
||||
// WITH_REFLECT
|
||||
|
||||
import kotlin.reflect.jvm.reflect
|
||||
import kotlin.test.*
|
||||
import kotlin.jvm.JvmSerializableLambda
|
||||
|
||||
fun box(): String {
|
||||
assertNull({}.reflect())
|
||||
assertNull((fun () {}).reflect())
|
||||
assertNull((fun Any.() {}).reflect())
|
||||
|
||||
assertNotNull((@JvmSerializableLambda {}).reflect())
|
||||
assertNotNull((@JvmSerializableLambda fun () {}).reflect())
|
||||
assertNotNull((@JvmSerializableLambda fun Any.() {}).reflect())
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// LAMBDAS: CLASS
|
||||
// !OPT_IN: kotlin.reflect.jvm.ExperimentalReflectionOnLambdas
|
||||
// TARGET_BACKEND: JVM
|
||||
// WITH_REFLECT
|
||||
|
||||
Vendored
+1
@@ -1,3 +1,4 @@
|
||||
// LAMBDAS: CLASS
|
||||
// !OPT_IN: kotlin.reflect.jvm.ExperimentalReflectionOnLambdas
|
||||
// TARGET_BACKEND: JVM
|
||||
// WITH_REFLECT
|
||||
|
||||
Vendored
+1
@@ -1,3 +1,4 @@
|
||||
// LAMBDAS: CLASS
|
||||
// !OPT_IN: kotlin.reflect.jvm.ExperimentalReflectionOnLambdas
|
||||
// TARGET_BACKEND: JVM
|
||||
// WITH_REFLECT
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// LAMBDAS: CLASS
|
||||
// !OPT_IN: kotlin.reflect.jvm.ExperimentalReflectionOnLambdas
|
||||
// TARGET_BACKEND: JVM
|
||||
// WITH_REFLECT
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// LAMBDAS: CLASS
|
||||
// !OPT_IN: kotlin.reflect.jvm.ExperimentalReflectionOnLambdas
|
||||
// TARGET_BACKEND: JVM
|
||||
// WITH_REFLECT
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// LAMBDAS: CLASS
|
||||
// !OPT_IN: kotlin.reflect.jvm.ExperimentalReflectionOnLambdas
|
||||
// TARGET_BACKEND: JVM
|
||||
// WITH_REFLECT
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// LAMBDAS: CLASS
|
||||
// !OPT_IN: kotlin.reflect.jvm.ExperimentalReflectionOnLambdas
|
||||
// TARGET_BACKEND: JVM
|
||||
// WITH_REFLECT
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// LAMBDAS: CLASS
|
||||
// !OPT_IN: kotlin.reflect.jvm.ExperimentalReflectionOnLambdas
|
||||
// TARGET_BACKEND: JVM
|
||||
// WITH_REFLECT
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// LAMBDAS: CLASS
|
||||
// !OPT_IN: kotlin.reflect.jvm.ExperimentalReflectionOnLambdas
|
||||
// TARGET_BACKEND: JVM
|
||||
// WITH_REFLECT
|
||||
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
// LAMBDAS: INDY
|
||||
// FIR_IDENTICAL
|
||||
// WITH_STDLIB
|
||||
|
||||
import kotlin.jvm.JvmSerializableLambda
|
||||
|
||||
fun foo() = fun () {}
|
||||
|
||||
val good1 = @JvmSerializableLambda {}
|
||||
val good2 = @JvmSerializableLambda fun () {}
|
||||
val good3 = @JvmSerializableLambda fun Any.() {}
|
||||
val good4 = listOf(@JvmSerializableLambda {})[0]
|
||||
|
||||
val bad1 = <!WRONG_ANNOTATION_TARGET!>@JvmSerializableLambda<!> 1
|
||||
val bad2 = <!WRONG_ANNOTATION_TARGET!>@JvmSerializableLambda<!> object {}
|
||||
val bad3 = <!WRONG_ANNOTATION_TARGET!>@JvmSerializableLambda<!> ::foo
|
||||
val bad4 = listOf(<!WRONG_ANNOTATION_TARGET!>@JvmSerializableLambda<!> 1)[0]
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
package
|
||||
|
||||
public val bad1: kotlin.Int
|
||||
public val bad2: kotlin.Any
|
||||
public val bad3: kotlin.reflect.KFunction0<() -> kotlin.Unit>
|
||||
public val bad4: kotlin.Int
|
||||
public val good1: () -> kotlin.Unit
|
||||
public val good2: () -> kotlin.Unit
|
||||
public val good3: kotlin.Any.() -> kotlin.Unit
|
||||
public val good4: () -> kotlin.Unit
|
||||
public fun foo(): () -> kotlin.Unit
|
||||
Reference in New Issue
Block a user