Add new metadata flag for class files compiled with FIR
Report a separate error when class files compiled with FIR are in dependencies, in addition to the one for class files compiled with FE 1.0 + JVM IR. #KT-43592
This commit is contained in:
@@ -8,7 +8,9 @@ package org.jetbrains.kotlin.backend.jvm
|
||||
import org.jetbrains.kotlin.backend.jvm.codegen.DescriptorMetadataSerializer
|
||||
import org.jetbrains.kotlin.backend.jvm.codegen.MetadataSerializer
|
||||
import org.jetbrains.kotlin.codegen.serialization.JvmSerializationBindings
|
||||
import org.jetbrains.kotlin.config.JvmAbiStability
|
||||
import org.jetbrains.kotlin.ir.declarations.IrClass
|
||||
import org.jetbrains.kotlin.load.java.JvmAnnotationNames
|
||||
import org.jetbrains.org.objectweb.asm.Type
|
||||
|
||||
interface JvmBackendExtension {
|
||||
@@ -16,6 +18,8 @@ interface JvmBackendExtension {
|
||||
context: JvmBackendContext, klass: IrClass, type: Type, bindings: JvmSerializationBindings, parentSerializer: MetadataSerializer?
|
||||
): MetadataSerializer
|
||||
|
||||
fun generateMetadataExtraFlags(abiStability: JvmAbiStability?): Int
|
||||
|
||||
object Default : JvmBackendExtension {
|
||||
override fun createSerializer(
|
||||
context: JvmBackendContext,
|
||||
@@ -26,5 +30,9 @@ interface JvmBackendExtension {
|
||||
): MetadataSerializer {
|
||||
return DescriptorMetadataSerializer(context, klass, type, bindings, parentSerializer)
|
||||
}
|
||||
|
||||
override fun generateMetadataExtraFlags(abiStability: JvmAbiStability?): Int =
|
||||
JvmAnnotationNames.METADATA_JVM_IR_FLAG or
|
||||
(if (abiStability == JvmAbiStability.STABLE) JvmAnnotationNames.METADATA_JVM_IR_STABLE_ABI_FLAG else 0)
|
||||
}
|
||||
}
|
||||
|
||||
+1
-5
@@ -13,7 +13,6 @@ import org.jetbrains.kotlin.backend.jvm.lower.hasAssertionsDisabledField
|
||||
import org.jetbrains.kotlin.codegen.DescriptorAsmUtil
|
||||
import org.jetbrains.kotlin.codegen.inline.*
|
||||
import org.jetbrains.kotlin.codegen.writeKotlinMetadata
|
||||
import org.jetbrains.kotlin.config.JvmAbiStability
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
|
||||
@@ -197,10 +196,7 @@ class ClassCodegen private constructor(
|
||||
|
||||
private fun generateKotlinMetadataAnnotation() {
|
||||
// TODO: if `-Xmultifile-parts-inherit` is enabled, write the corresponding flag for parts and facades to [Metadata.extraInt].
|
||||
var extraFlags = JvmAnnotationNames.METADATA_JVM_IR_FLAG
|
||||
if (state.abiStability != JvmAbiStability.UNSTABLE) {
|
||||
extraFlags += JvmAnnotationNames.METADATA_JVM_IR_STABLE_ABI_FLAG
|
||||
}
|
||||
val extraFlags = context.backendExtension.generateMetadataExtraFlags(state.abiStability)
|
||||
|
||||
val facadeClassName = context.multifileFacadeForPart[irClass.attributeOwnerId]
|
||||
val metadata = irClass.metadata
|
||||
|
||||
+1
-5
@@ -13,7 +13,6 @@ import org.jetbrains.kotlin.backend.jvm.lower.hasAssertionsDisabledField
|
||||
import org.jetbrains.kotlin.codegen.DescriptorAsmUtil
|
||||
import org.jetbrains.kotlin.codegen.inline.*
|
||||
import org.jetbrains.kotlin.codegen.writeKotlinMetadata
|
||||
import org.jetbrains.kotlin.config.JvmAbiStability
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
|
||||
@@ -197,10 +196,7 @@ class ClassCodegen private constructor(
|
||||
|
||||
private fun generateKotlinMetadataAnnotation() {
|
||||
// TODO: if `-Xmultifile-parts-inherit` is enabled, write the corresponding flag for parts and facades to [Metadata.extraInt].
|
||||
var extraFlags = JvmAnnotationNames.METADATA_JVM_IR_FLAG
|
||||
if (state.abiStability != JvmAbiStability.UNSTABLE) {
|
||||
extraFlags += JvmAnnotationNames.METADATA_JVM_IR_STABLE_ABI_FLAG
|
||||
}
|
||||
val extraFlags = context.backendExtension.generateMetadataExtraFlags(state.abiStability)
|
||||
|
||||
val facadeClassName = context.multifileFacadeForPart[irClass.attributeOwnerId]
|
||||
val metadata = irClass.metadata
|
||||
|
||||
Reference in New Issue
Block a user