fixup! Allow using 'invokedynamic' for lambdas with annotations
diff --git a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/indy/LambdaMetafactoryArguments.kt b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/indy/LambdaMetafactoryArguments.kt index 3104ac3..37542ad 100644 --- a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/indy/LambdaMetafactoryArguments.kt +++ b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/indy/LambdaMetafactoryArguments.kt
@@ -14,7 +14,6 @@ import org.jetbrains.kotlin.backend.jvm.needsMfvcFlattening import org.jetbrains.kotlin.builtins.functions.BuiltInFunctionArity import org.jetbrains.kotlin.config.LanguageFeature -import org.jetbrains.kotlin.config.indyAllowAnnotatedLambdas import org.jetbrains.kotlin.descriptors.DescriptorVisibilities import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.ir.IrElement @@ -33,6 +32,7 @@ import org.jetbrains.kotlin.load.java.JvmAnnotationNames import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.resolve.jvm.annotations.JVM_SERIALIZABLE_LAMBDA_ANNOTATION_FQ_NAME import org.jetbrains.kotlin.types.Variance import org.jetbrains.kotlin.utils.addIfNotNull @@ -177,6 +177,11 @@ abiHazard = true } + if (implFun.annotations.hasAnnotation(JVM_SERIALIZABLE_LAMBDA_ANNOTATION_FQ_NAME)) { + // Lambdas annotated with @kotlin.jvm.JvmSerializableLambda are expected to generate their own class + semanticsHazard = true + } + // Don't use JDK LambdaMetafactory for big arity lambdas. if (plainLambda) { var parametersCount = implFun.valueParameters.size