From 7b7da66d2ba288f81c87005c3ecc3d116b0d5165 Mon Sep 17 00:00:00 2001 From: Mads Ager Date: Fri, 10 Mar 2023 11:58:06 +0100 Subject: [PATCH] [K2] Update JvmDefault compatibility metadata. --- .../fir/backend/jvm/FirJvmSerializerExtension.kt | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/FirJvmSerializerExtension.kt b/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/FirJvmSerializerExtension.kt index a34614fabba..f36bedf4577 100644 --- a/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/FirJvmSerializerExtension.kt +++ b/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/FirJvmSerializerExtension.kt @@ -36,6 +36,7 @@ import org.jetbrains.kotlin.metadata.jvm.deserialization.ClassMapperLite import org.jetbrains.kotlin.metadata.jvm.deserialization.JvmFlags import org.jetbrains.kotlin.metadata.jvm.deserialization.JvmProtoBufUtil import org.jetbrains.kotlin.metadata.serialization.MutableVersionRequirementTable +import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.protobuf.GeneratedMessageLite import org.jetbrains.kotlin.serialization.DescriptorSerializer @@ -97,7 +98,10 @@ class FirJvmSerializerExtension( JvmProtoBuf.jvmClassFlags, JvmFlags.getClassFlags( jvmDefaultMode.forAllMethodsWithBody, - JvmDefaultMode.ALL_COMPATIBILITY == jvmDefaultMode + (JvmDefaultMode.ALL_COMPATIBILITY == jvmDefaultMode && + !klass.hasAnnotation(JVM_DEFAULT_NO_COMPATIBILITY_CLASS_ID, session)) || + (JvmDefaultMode.ALL_INCOMPATIBLE == jvmDefaultMode && + klass.hasAnnotation(JVM_DEFAULT_WITH_COMPATIBILITY_CLASS_ID, session)) ) ) } @@ -389,6 +393,9 @@ class FirJvmSerializerExtension( val FIELD_FOR_PROPERTY = JvmSerializationBindings.SerializationMappingSlice.create>() val SYNTHETIC_METHOD_FOR_FIR_VARIABLE = JvmSerializationBindings.SerializationMappingSlice.create() val DELEGATE_METHOD_FOR_FIR_VARIABLE = JvmSerializationBindings.SerializationMappingSlice.create() + private val JVM_DEFAULT_NO_COMPATIBILITY_FQ_NAME = FqName("kotlin.jvm.JvmDefaultWithoutCompatibility") + private val JVM_DEFAULT_WITH_COMPATIBILITY_FQ_NAME = FqName("kotlin.jvm.JvmDefaultWithCompatibility") + private val JVM_DEFAULT_NO_COMPATIBILITY_CLASS_ID = ClassId.topLevel(JVM_DEFAULT_NO_COMPATIBILITY_FQ_NAME) + private val JVM_DEFAULT_WITH_COMPATIBILITY_CLASS_ID = ClassId.topLevel(JVM_DEFAULT_WITH_COMPATIBILITY_FQ_NAME) } - }