Skip to content

Commit 7c22113

Browse files
committed
Refactor serialization of package FQ name extension
Instead of requiring to pass it in SerializerExtensionBase's constructor, pass it always in serializePackage. This is more straightforward and helps in a situation where one SerializerExtension instance is used for the whole module, not one per-package
1 parent c952e26 commit 7c22113

File tree

10 files changed

+19
-24
lines changed

10 files changed

+19
-24
lines changed

compiler/backend/src/org/jetbrains/kotlin/codegen/MultifileClassPartCodegen.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ class MultifileClassPartCodegen(
176176
}
177177

178178
val serializer = DescriptorSerializer.createTopLevel(JvmSerializerExtension(v.serializationBindings, state))
179-
val packageProto = serializer.packagePartProto(members).build()
179+
val packageProto = serializer.packagePartProto(packageFragment.fqName, members).build()
180180

181181
val extraFlags = if (shouldGeneratePartHierarchy) JvmAnnotationNames.METADATA_MULTIFILE_PARTS_INHERIT_FLAG else 0
182182

compiler/backend/src/org/jetbrains/kotlin/codegen/PackagePartCodegen.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ else if (declaration instanceof KtTypeAlias) {
129129

130130
final DescriptorSerializer serializer =
131131
DescriptorSerializer.createTopLevel(new JvmSerializerExtension(v.getSerializationBindings(), state));
132-
final ProtoBuf.Package packageProto = serializer.packagePartProto(members).build();
132+
final ProtoBuf.Package packageProto = serializer.packagePartProto(element.getPackageFqName(), members).build();
133133

134134
WriteAnnotationUtilKt.writeKotlinMetadata(v, state, KotlinClassHeader.Kind.FILE_FACADE, 0, new Function1<AnnotationVisitor, Unit>() {
135135
@Override

compiler/backend/src/org/jetbrains/kotlin/codegen/serialization/JvmSerializerExtension.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.jetbrains.kotlin.load.kotlin.JavaFlexibleTypeDeserializer;
2929
import org.jetbrains.kotlin.load.kotlin.TypeSignatureMappingKt;
3030
import org.jetbrains.kotlin.name.ClassId;
31+
import org.jetbrains.kotlin.name.FqName;
3132
import org.jetbrains.kotlin.serialization.AnnotationSerializer;
3233
import org.jetbrains.kotlin.serialization.ProtoBuf;
3334
import org.jetbrains.kotlin.serialization.SerializerExtension;
@@ -77,7 +78,7 @@ public void serializeClass(@NotNull ClassDescriptor descriptor, @NotNull ProtoBu
7778
}
7879

7980
@Override
80-
public void serializePackage(@NotNull ProtoBuf.Package.Builder proto) {
81+
public void serializePackage(@NotNull FqName packageFqName, @NotNull ProtoBuf.Package.Builder proto) {
8182
if (!moduleName.equals(JvmAbi.DEFAULT_MODULE_NAME)) {
8283
proto.setExtension(JvmProtoBuf.packageModuleName, stringTable.getStringIndex(moduleName));
8384
}

compiler/builtins-serializer/src/org/jetbrains/kotlin/serialization/MetadataSerializer.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -141,11 +141,11 @@ open class MetadataSerializer(private val dependOnOldBuiltIns: Boolean) {
141141
protected inner class PackageSerializer(
142142
private val classes: Collection<DeclarationDescriptor>,
143143
private val members: Collection<DeclarationDescriptor>,
144-
packageFqName: FqName,
144+
private val packageFqName: FqName,
145145
private val destFile: File
146146
) {
147147
private val proto = ProtoBuf.PackageFragment.newBuilder()
148-
private val extension = BuiltInsSerializerExtension(packageFqName)
148+
private val extension = BuiltInsSerializerExtension()
149149

150150
fun run() {
151151
serializeClasses(classes)
@@ -170,7 +170,7 @@ open class MetadataSerializer(private val dependOnOldBuiltIns: Boolean) {
170170
}
171171

172172
private fun serializeMembers(members: Collection<DeclarationDescriptor>) {
173-
proto.`package` = DescriptorSerializer.createTopLevel(extension).packagePartProto(members).build()
173+
proto.`package` = DescriptorSerializer.createTopLevel(extension).packagePartProto(packageFqName, members).build()
174174
}
175175

176176
private fun serializeStringTable() {

compiler/builtins-serializer/src/org/jetbrains/kotlin/serialization/builtins/BuiltInsSerializerExtension.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,8 @@
1717
package org.jetbrains.kotlin.serialization.builtins
1818

1919
import org.jetbrains.kotlin.builtins.BuiltInSerializerProtocol
20-
import org.jetbrains.kotlin.name.FqName
2120
import org.jetbrains.kotlin.serialization.KotlinSerializerExtensionBase
2221

23-
class BuiltInsSerializerExtension(packageFqName: FqName) : KotlinSerializerExtensionBase(BuiltInSerializerProtocol, packageFqName) {
22+
class BuiltInsSerializerExtension : KotlinSerializerExtensionBase(BuiltInSerializerProtocol) {
2423
override fun shouldUseTypeTable(): Boolean = true
2524
}

compiler/serialization/src/org/jetbrains/kotlin/serialization/DescriptorSerializer.kt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,18 @@
1717
package org.jetbrains.kotlin.serialization
1818

1919
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
20-
import org.jetbrains.kotlin.builtins.functions.FunctionClassDescriptor
21-
import org.jetbrains.kotlin.builtins.getFunctionalClassKind
2220
import org.jetbrains.kotlin.builtins.isSuspendFunctionType
2321
import org.jetbrains.kotlin.builtins.transformSuspendFunctionToRuntimeFunctionType
2422
import org.jetbrains.kotlin.config.LanguageFeature
2523
import org.jetbrains.kotlin.descriptors.*
2624
import org.jetbrains.kotlin.descriptors.annotations.Annotated
25+
import org.jetbrains.kotlin.name.FqName
2726
import org.jetbrains.kotlin.name.Name
2827
import org.jetbrains.kotlin.protobuf.MessageLite
2928
import org.jetbrains.kotlin.resolve.DescriptorUtils
3029
import org.jetbrains.kotlin.resolve.DescriptorUtils.isEnumEntry
3130
import org.jetbrains.kotlin.resolve.MemberComparator
3231
import org.jetbrains.kotlin.resolve.constants.NullValue
33-
import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
3432
import org.jetbrains.kotlin.serialization.deserialization.descriptors.SinceKotlinInfo
3533
import org.jetbrains.kotlin.types.*
3634
import org.jetbrains.kotlin.types.typeUtil.contains
@@ -543,7 +541,7 @@ class DescriptorSerializer private constructor(
543541
return builder
544542
}
545543

546-
fun packagePartProto(members: Collection<DeclarationDescriptor>): ProtoBuf.Package.Builder {
544+
fun packagePartProto(packageFqName: FqName, members: Collection<DeclarationDescriptor>): ProtoBuf.Package.Builder {
547545
val builder = ProtoBuf.Package.newBuilder()
548546

549547
for (declaration in sort(members)) {
@@ -564,7 +562,7 @@ class DescriptorSerializer private constructor(
564562
builder.sinceKotlinInfoTable = sinceKotlinInfoProto
565563
}
566564

567-
extension.serializePackage(builder)
565+
extension.serializePackage(packageFqName, builder)
568566

569567
return builder
570568
}

compiler/serialization/src/org/jetbrains/kotlin/serialization/SerializerExtension.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package org.jetbrains.kotlin.serialization
1818

1919
import org.jetbrains.kotlin.descriptors.*
20+
import org.jetbrains.kotlin.name.FqName
2021
import org.jetbrains.kotlin.types.FlexibleType
2122
import org.jetbrains.kotlin.types.KotlinType
2223

@@ -30,7 +31,7 @@ abstract class SerializerExtension {
3031
open fun serializeClass(descriptor: ClassDescriptor, proto: ProtoBuf.Class.Builder) {
3132
}
3233

33-
open fun serializePackage(proto: ProtoBuf.Package.Builder) {
34+
open fun serializePackage(packageFqName: FqName, proto: ProtoBuf.Package.Builder) {
3435
}
3536

3637
open fun serializeConstructor(descriptor: ConstructorDescriptor, proto: ProtoBuf.Constructor.Builder) {

compiler/serialization/src/org/jetbrains/kotlin/serialization/SerializerExtensionBase.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,7 @@ import org.jetbrains.kotlin.name.FqName
2121
import org.jetbrains.kotlin.resolve.constants.NullValue
2222
import org.jetbrains.kotlin.types.KotlinType
2323

24-
open class KotlinSerializerExtensionBase(
25-
private val protocol: SerializerExtensionProtocol,
26-
private val packageFqName: FqName
27-
) : SerializerExtension() {
24+
open class KotlinSerializerExtensionBase(private val protocol: SerializerExtensionProtocol) : SerializerExtension() {
2825
override val stringTable = StringTableImpl()
2926

3027
override fun serializeClass(descriptor: ClassDescriptor, proto: ProtoBuf.Class.Builder) {
@@ -33,7 +30,7 @@ open class KotlinSerializerExtensionBase(
3330
}
3431
}
3532

36-
override fun serializePackage(proto: ProtoBuf.Package.Builder) {
33+
override fun serializePackage(packageFqName: FqName, proto: ProtoBuf.Package.Builder) {
3734
proto.setExtension(protocol.packageFqName, stringTable.getPackageFqNameIndex(packageFqName))
3835
}
3936

js/js.serializer/src/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializationUtil.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ object KotlinJavascriptSerializationUtil {
9393
val skip: (DeclarationDescriptor) -> Boolean = { DescriptorUtils.getContainingModule(it) != module || (it is MemberDescriptor && it.isHeader) }
9494

9595
val fileRegistry = KotlinFileRegistry()
96-
val serializerExtension = KotlinJavascriptSerializerExtension(fileRegistry, fqName)
96+
val serializerExtension = KotlinJavascriptSerializerExtension(fileRegistry)
9797
val serializer = DescriptorSerializer.createTopLevel(serializerExtension)
9898

9999
val classDescriptors = DescriptorSerializer.sort(
@@ -123,7 +123,7 @@ object KotlinJavascriptSerializationUtil {
123123
val members = fragments
124124
.flatMap { fragment -> DescriptorUtils.getAllDescriptors(fragment.getMemberScope()) }
125125
.filterNot(skip)
126-
builder.`package` = serializer.packagePartProto(members).build()
126+
builder.`package` = serializer.packagePartProto(fqName, members).build()
127127

128128
builder.setExtension(
129129
JsProtoBuf.packageFragmentFiles,

js/js.serializer/src/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializerExtension.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,8 @@ import org.jetbrains.kotlin.serialization.SerializerExtensionProtocol
2929
import org.jetbrains.kotlin.types.FlexibleType
3030

3131
class KotlinJavascriptSerializerExtension(
32-
private val fileRegistry: KotlinFileRegistry,
33-
packageFqName: FqName
34-
) : KotlinSerializerExtensionBase(JsSerializerProtocol, packageFqName) {
32+
private val fileRegistry: KotlinFileRegistry
33+
) : KotlinSerializerExtensionBase(JsSerializerProtocol) {
3534
override val stringTable = JavaScriptStringTable()
3635

3736
override fun serializeFlexibleType(flexibleType: FlexibleType, lowerProto: ProtoBuf.Type.Builder, upperProto: ProtoBuf.Type.Builder) {

0 commit comments

Comments
 (0)