From 6595275ba7a6a9a55daac70fab3f17213f3da7bd Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Mon, 6 Mar 2023 13:07:38 +0100 Subject: [PATCH] Remove ClassBuilderMode.ABI It was a special mode used only by the removed legacy implementation of jvm-abi-gen. --- .../kotlin/codegen/ClassBuilderMode.java | 10 ---------- .../serialization/JvmSerializerExtension.kt | 18 ------------------ .../fir/serialization/FirElementSerializer.kt | 15 ++++----------- .../serialization/FirSerializerExtension.kt | 6 +----- .../fir/serialization/firKlibSerialization.kt | 6 +----- .../backend/jvm/FirJvmSerializerExtension.kt | 18 ------------------ .../serialization/DescriptorSerializer.kt | 10 ---------- .../serialization/SerializerExtension.kt | 4 ---- 8 files changed, 6 insertions(+), 81 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ClassBuilderMode.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/ClassBuilderMode.java index 01fab5e4288..116c009e2a7 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ClassBuilderMode.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ClassBuilderMode.java @@ -49,16 +49,6 @@ public class ClassBuilderMode { /* generateMultiFileFacadePartClasses = */ true, /* mightBeIncorrectCode = */ false); - /** - * ABI for compilation (non-private signatures + inline function bodies) - */ - public final static ClassBuilderMode ABI = new ClassBuilderMode( - /* bodies = */ true, - /* metadata = */ true, - /* sourceRetention = */ false, - /* generateMultiFileFacadePartClasses = */ true, - /* mightBeIncorrectCode = */ false); - /** * Generating light classes: Only function signatures */ diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/serialization/JvmSerializerExtension.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/serialization/JvmSerializerExtension.kt index 8a9c75c391b..cd98ea4daa1 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/serialization/JvmSerializerExtension.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/serialization/JvmSerializerExtension.kt @@ -13,7 +13,6 @@ import org.jetbrains.kotlin.codegen.serialization.JvmSerializationBindings.* import org.jetbrains.kotlin.codegen.state.GenerationState import org.jetbrains.kotlin.codegen.state.KotlinTypeMapperBase import org.jetbrains.kotlin.config.JvmDefaultMode -import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.load.java.DescriptorsJvmAbiUtil import org.jetbrains.kotlin.load.java.lazy.types.RawTypeImpl @@ -29,7 +28,6 @@ import org.jetbrains.kotlin.protobuf.GeneratedMessageLite import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.DescriptorUtils.isInterface import org.jetbrains.kotlin.resolve.descriptorUtil.classId -import org.jetbrains.kotlin.resolve.descriptorUtil.isEffectivelyPrivateApi import org.jetbrains.kotlin.resolve.descriptorUtil.nonSourceAnnotations import org.jetbrains.kotlin.resolve.jvm.annotations.hasJvmDefaultNoCompatibilityAnnotation import org.jetbrains.kotlin.resolve.jvm.annotations.hasJvmDefaultWithCompatibilityAnnotation @@ -64,22 +62,6 @@ class JvmSerializerExtension @JvmOverloads constructor( private val useOldManglingScheme = state.useOldManglingSchemeForFunctionsWithInlineClassesInSignatures override fun shouldUseTypeTable(): Boolean = useTypeTable - override fun shouldSerializeFunction(descriptor: FunctionDescriptor): Boolean { - return classBuilderMode != ClassBuilderMode.ABI || descriptor.visibility != DescriptorVisibilities.PRIVATE - } - - override fun shouldSerializeProperty(descriptor: PropertyDescriptor): Boolean { - return classBuilderMode != ClassBuilderMode.ABI || descriptor.visibility != DescriptorVisibilities.PRIVATE - } - - override fun shouldSerializeTypeAlias(descriptor: TypeAliasDescriptor): Boolean { - // TODO: do not serialize private type aliases in ABI class builder mode once KT-17229 is fixed. - return true - } - - override fun shouldSerializeNestedClass(descriptor: ClassDescriptor): Boolean { - return classBuilderMode != ClassBuilderMode.ABI || !descriptor.isEffectivelyPrivateApi - } override fun serializeClass( descriptor: ClassDescriptor, diff --git a/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirElementSerializer.kt b/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirElementSerializer.kt index 33e5f16f190..ad6bc721162 100644 --- a/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirElementSerializer.kt +++ b/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirElementSerializer.kt @@ -32,7 +32,10 @@ import org.jetbrains.kotlin.fir.serialization.constant.EnumValue import org.jetbrains.kotlin.fir.serialization.constant.IntValue import org.jetbrains.kotlin.fir.serialization.constant.StringValue import org.jetbrains.kotlin.fir.serialization.constant.toConstantValue -import org.jetbrains.kotlin.fir.symbols.impl.* +import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol +import org.jetbrains.kotlin.fir.symbols.impl.FirClassifierSymbol +import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol +import org.jetbrains.kotlin.fir.symbols.impl.FirTypeAliasSymbol import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl @@ -195,10 +198,6 @@ class FirElementSerializer private constructor( if (nestedClassifier is FirTypeAliasSymbol) { typeAliasProto(nestedClassifier.fir)?.let { builder.addTypeAlias(it) } } else if (nestedClassifier is FirRegularClassSymbol) { - if (!extension.shouldSerializeNestedClass(nestedClassifier.fir)) { - continue - } - builder.addNestedClassName(getSimpleNameIndex(nestedClassifier.name)) } } @@ -311,8 +310,6 @@ class FirElementSerializer private constructor( (this as FirAnnotationContainer).nonSourceAnnotations(session) fun propertyProto(property: FirProperty): ProtoBuf.Property.Builder? = whileAnalysing(session, property) { - if (!extension.shouldSerializeProperty(property)) return null - val builder = ProtoBuf.Property.newBuilder() val local = createChildSerializer(property) @@ -419,8 +416,6 @@ class FirElementSerializer private constructor( } fun functionProto(function: FirFunction): ProtoBuf.Function.Builder? = whileAnalysing(session, function) { - if (!extension.shouldSerializeFunction(function)) return null - val builder = ProtoBuf.Function.newBuilder() val simpleFunction = function as? FirSimpleFunction @@ -523,8 +518,6 @@ class FirElementSerializer private constructor( } private fun typeAliasProto(typeAlias: FirTypeAlias): ProtoBuf.TypeAlias.Builder? = whileAnalysing(session, typeAlias) { - if (!extension.shouldSerializeTypeAlias(typeAlias)) return null - val builder = ProtoBuf.TypeAlias.newBuilder() val local = createChildSerializer(typeAlias) diff --git a/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirSerializerExtension.kt b/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirSerializerExtension.kt index cd85289059c..b53d68d6f8f 100644 --- a/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirSerializerExtension.kt +++ b/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirSerializerExtension.kt @@ -8,8 +8,8 @@ package org.jetbrains.kotlin.fir.serialization import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.expressions.FirAnnotation -import org.jetbrains.kotlin.fir.types.ConeFlexibleType import org.jetbrains.kotlin.fir.types.ConeErrorType +import org.jetbrains.kotlin.fir.types.ConeFlexibleType import org.jetbrains.kotlin.metadata.ProtoBuf import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion import org.jetbrains.kotlin.metadata.serialization.MutableVersionRequirementTable @@ -24,12 +24,8 @@ abstract class FirSerializerExtension { val annotationSerializer by lazy { FirAnnotationSerializer(session, stringTable) } - open fun shouldSerializeNestedClass(nestedClass: FirRegularClass): Boolean = true - open fun shouldSerializeTypeAlias(typeAlias: FirTypeAlias): Boolean = true open fun shouldUseTypeTable(): Boolean = false open fun shouldUseNormalizedVisibility(): Boolean = false - abstract fun shouldSerializeFunction(function: FirFunction): Boolean - abstract fun shouldSerializeProperty(property: FirProperty): Boolean open fun serializePackage(packageFqName: FqName, proto: ProtoBuf.Package.Builder) { } diff --git a/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/firKlibSerialization.kt b/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/firKlibSerialization.kt index 55847a4d144..0df186fc800 100644 --- a/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/firKlibSerialization.kt +++ b/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/firKlibSerialization.kt @@ -61,11 +61,7 @@ open class FirKLibSerializerExtension( override val session: FirSession, override val metadataVersion: BinaryVersion, override val stringTable: FirElementAwareSerializableStringTable -) : FirSerializerExtension() { - override fun shouldSerializeFunction(function: FirFunction): Boolean = true - - override fun shouldSerializeProperty(property: FirProperty): Boolean = true -} +) : FirSerializerExtension() class FirElementAwareSerializableStringTable() : FirElementAwareStringTable, SerializableStringTable() { override fun getLocalClassIdReplacement(firClass: FirClass): ClassId? = ClassId.topLevel(StandardNames.FqNames.any.toSafe()) 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 3653fa90f12..a34614fabba 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 @@ -10,7 +10,6 @@ import org.jetbrains.kotlin.codegen.ClassBuilderMode import org.jetbrains.kotlin.codegen.serialization.JvmSerializationBindings import org.jetbrains.kotlin.codegen.state.GenerationState import org.jetbrains.kotlin.config.JvmDefaultMode -import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.fir.FirSession @@ -79,23 +78,6 @@ class FirJvmSerializerExtension( ) override fun shouldUseTypeTable(): Boolean = useTypeTable - override fun shouldSerializeFunction(function: FirFunction): Boolean { - return classBuilderMode != ClassBuilderMode.ABI || - function !is FirSimpleFunction || function.visibility != Visibilities.Private - } - - override fun shouldSerializeProperty(property: FirProperty): Boolean { - return classBuilderMode != ClassBuilderMode.ABI || property.visibility != Visibilities.Private - } - - override fun shouldSerializeTypeAlias(typeAlias: FirTypeAlias): Boolean { - // TODO: do not serialize private type aliases in ABI class builder mode once KT-17229 is fixed. - return true - } - - override fun shouldSerializeNestedClass(nestedClass: FirRegularClass): Boolean { - return classBuilderMode != ClassBuilderMode.ABI || nestedClass.visibility != Visibilities.Private - } override fun serializeClass( klass: FirClass, diff --git a/compiler/serialization/src/org/jetbrains/kotlin/serialization/DescriptorSerializer.kt b/compiler/serialization/src/org/jetbrains/kotlin/serialization/DescriptorSerializer.kt index 0ff38eda300..f46f2cdb072 100644 --- a/compiler/serialization/src/org/jetbrains/kotlin/serialization/DescriptorSerializer.kt +++ b/compiler/serialization/src/org/jetbrains/kotlin/serialization/DescriptorSerializer.kt @@ -156,10 +156,6 @@ class DescriptorSerializer private constructor( if (descriptor is TypeAliasDescriptor) { typeAliasProto(descriptor)?.let { builder.addTypeAlias(it) } } else { - if (descriptor is ClassDescriptor && !extension.shouldSerializeNestedClass(descriptor)) { - continue - } - val name = getSimpleNameIndex(descriptor.name) if (isEnumEntry(descriptor)) { builder.addEnumEntry(enumEntryProto(descriptor as ClassDescriptor)) @@ -254,8 +250,6 @@ class DescriptorSerializer private constructor( } fun propertyProto(descriptor: PropertyDescriptor): ProtoBuf.Property.Builder? { - if (!extension.shouldSerializeProperty(descriptor)) return null - val builder = ProtoBuf.Property.newBuilder() val local = createChildSerializer(descriptor) @@ -384,8 +378,6 @@ class DescriptorSerializer private constructor( } fun functionProto(descriptor: FunctionDescriptor): ProtoBuf.Function.Builder? { - if (!extension.shouldSerializeFunction(descriptor)) return null - val builder = ProtoBuf.Function.newBuilder() val local = createChildSerializer(descriptor) @@ -530,8 +522,6 @@ class DescriptorSerializer private constructor( } private fun typeAliasProto(descriptor: TypeAliasDescriptor): ProtoBuf.TypeAlias.Builder? = withNewMetDefinitelyNotNullType { - if (!extension.shouldSerializeTypeAlias(descriptor)) return null - val builder = ProtoBuf.TypeAlias.newBuilder() val local = createChildSerializer(descriptor) diff --git a/compiler/serialization/src/org/jetbrains/kotlin/serialization/SerializerExtension.kt b/compiler/serialization/src/org/jetbrains/kotlin/serialization/SerializerExtension.kt index 6b337f19bf0..5098341f5b0 100644 --- a/compiler/serialization/src/org/jetbrains/kotlin/serialization/SerializerExtension.kt +++ b/compiler/serialization/src/org/jetbrains/kotlin/serialization/SerializerExtension.kt @@ -24,10 +24,6 @@ abstract class SerializerExtension { open fun shouldUseTypeTable(): Boolean = false open fun shouldUseNormalizedVisibility(): Boolean = false - open fun shouldSerializeFunction(descriptor: FunctionDescriptor): Boolean = true - open fun shouldSerializeProperty(descriptor: PropertyDescriptor): Boolean = true - open fun shouldSerializeTypeAlias(descriptor: TypeAliasDescriptor): Boolean = true - open fun shouldSerializeNestedClass(descriptor: ClassDescriptor): Boolean = true interface ClassMembersProducer { fun getCallableMembers(classDescriptor: ClassDescriptor): Collection