Add Package.packageFqName serializer extension
This commit is contained in:
committed by
vvlevchenko
parent
c76c214763
commit
1d0ec313b5
+4
@@ -15,6 +15,10 @@ option optimize_for = LITE_RUNTIME;
|
||||
|
||||
// Konan extensions to the "descriptors" protobuf.
|
||||
|
||||
extend Package {
|
||||
optional int32 package_fq_name = 171;
|
||||
}
|
||||
|
||||
extend Class {
|
||||
repeated Annotation class_annotation = 170;
|
||||
}
|
||||
|
||||
+6
-12
@@ -2,32 +2,26 @@ package org.jetbrains.kotlin.backend.konan.serialization
|
||||
|
||||
import org.jetbrains.kotlin.backend.konan.Context
|
||||
import org.jetbrains.kotlin.backend.konan.KonanPlatform
|
||||
import org.jetbrains.kotlin.backend.konan.llvm.base64Encode
|
||||
import org.jetbrains.kotlin.backend.konan.llvm.base64Decode
|
||||
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
||||
import org.jetbrains.kotlin.backend.konan.llvm.base64Encode
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl;
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.resolve.CompilerDeserializationConfiguration
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
|
||||
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
||||
import org.jetbrains.kotlin.serialization.AnnotationSerializer
|
||||
import org.jetbrains.kotlin.serialization.DescriptorSerializer
|
||||
import org.jetbrains.kotlin.serialization.ProtoBuf
|
||||
import org.jetbrains.kotlin.serialization.StringTableImpl
|
||||
import org.jetbrains.kotlin.serialization.deserialization.*
|
||||
import org.jetbrains.kotlin.serialization.KonanLinkData
|
||||
import org.jetbrains.kotlin.serialization.deserialization.FlexibleTypeDeserializer
|
||||
import org.jetbrains.kotlin.serialization.ProtoBuf
|
||||
import org.jetbrains.kotlin.serialization.deserialization.*
|
||||
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
||||
import org.jetbrains.kotlin.storage.StorageManager
|
||||
import org.jetbrains.kotlin.types.KotlinType
|
||||
import org.jetbrains.kotlin.types.SimpleType
|
||||
import org.jetbrains.kotlin.utils.*
|
||||
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
||||
|
||||
/* ------------ Deserializer part ------------------------------------------*/
|
||||
|
||||
@@ -152,7 +146,7 @@ internal class KonanSerializationUtil(val context: Context) {
|
||||
val members = fragments
|
||||
.flatMap { fragment -> DescriptorUtils.getAllDescriptors(fragment.getMemberScope()) }
|
||||
.filterNot(skip)
|
||||
val packageProto = serializer.packagePartProto(members).build()
|
||||
val packageProto = serializer.packagePartProto(fqName, members).build()
|
||||
?: error("Package fragments not serialized: $fragments")
|
||||
|
||||
|
||||
|
||||
+15
-22
@@ -18,26 +18,18 @@ package org.jetbrains.kotlin.backend.konan.serialization
|
||||
|
||||
import org.jetbrains.kotlin.backend.konan.Context
|
||||
import org.jetbrains.kotlin.backend.konan.descriptors.getKonanInternalClass
|
||||
import org.jetbrains.kotlin.serialization.Flags
|
||||
import org.jetbrains.kotlin.serialization.KonanLinkData
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.descriptors.annotations.*
|
||||
import org.jetbrains.kotlin.backend.konan.descriptors.*
|
||||
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.SourceElement
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptorImpl
|
||||
import org.jetbrains.kotlin.protobuf.ExtensionRegistryLite
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||
import org.jetbrains.kotlin.resolve.source.PsiSourceFile
|
||||
import org.jetbrains.kotlin.serialization.KotlinSerializerExtensionBase
|
||||
import org.jetbrains.kotlin.serialization.ProtoBuf
|
||||
import org.jetbrains.kotlin.serialization.SerializerExtensionProtocol
|
||||
import org.jetbrains.kotlin.types.FlexibleType
|
||||
import org.jetbrains.kotlin.serialization.*
|
||||
|
||||
internal class KonanSerializerExtension(val context: Context) :
|
||||
KotlinSerializerExtensionBase(KonanSerializerProtocol) {
|
||||
|
||||
override val stringTable = KonanStringTable()
|
||||
|
||||
private val backingFieldClass =
|
||||
private val backingFieldClass =
|
||||
context.builtIns.getKonanInternalClass("HasBackingField").getDefaultType()
|
||||
|
||||
private val backingFieldAnnotation = AnnotationDescriptorImpl(
|
||||
@@ -47,7 +39,7 @@ internal class KonanSerializerExtension(val context: Context) :
|
||||
super.serializeProperty(descriptor, proto)
|
||||
|
||||
if (context.ir.propertiesWithBackingFields.contains(descriptor)) {
|
||||
proto.addExtension(KonanLinkData.propertyAnnotation,
|
||||
proto.addExtension(KonanLinkData.propertyAnnotation,
|
||||
annotationSerializer.serializeAnnotation(backingFieldAnnotation))
|
||||
|
||||
proto.flags = proto.flags or Flags.HAS_ANNOTATIONS.toFlags(true)
|
||||
@@ -56,16 +48,17 @@ internal class KonanSerializerExtension(val context: Context) :
|
||||
}
|
||||
|
||||
object KonanSerializerProtocol : SerializerExtensionProtocol(
|
||||
ExtensionRegistryLite.newInstance().apply {
|
||||
KonanLinkData.registerAllExtensions(this)
|
||||
ExtensionRegistryLite.newInstance().apply {
|
||||
KonanLinkData.registerAllExtensions(this)
|
||||
},
|
||||
KonanLinkData.constructorAnnotation,
|
||||
KonanLinkData.classAnnotation,
|
||||
KonanLinkData.functionAnnotation,
|
||||
KonanLinkData.packageFqName,
|
||||
KonanLinkData.constructorAnnotation,
|
||||
KonanLinkData.classAnnotation,
|
||||
KonanLinkData.functionAnnotation,
|
||||
KonanLinkData.propertyAnnotation,
|
||||
KonanLinkData.enumEntryAnnotation,
|
||||
KonanLinkData.compileTimeValue,
|
||||
KonanLinkData.parameterAnnotation,
|
||||
KonanLinkData.enumEntryAnnotation,
|
||||
KonanLinkData.compileTimeValue,
|
||||
KonanLinkData.parameterAnnotation,
|
||||
KonanLinkData.typeAnnotation,
|
||||
KonanLinkData.typeParameterAnnotation
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user