Minor, make ProtoContainer sealed with two subclasses
This commit is contained in:
+2
-2
@@ -239,8 +239,8 @@ public class MemberDeserializer(private val c: DeserializationContext) {
|
||||
}
|
||||
|
||||
private fun DeclarationDescriptor.asProtoContainer(): ProtoContainer? = when(this) {
|
||||
is PackageFragmentDescriptor -> ProtoContainer(null, fqName, c.nameResolver, c.typeTable)
|
||||
is DeserializedClassDescriptor -> ProtoContainer(classProto, null, c.nameResolver, c.typeTable)
|
||||
is PackageFragmentDescriptor -> ProtoContainer.Package(fqName, c.nameResolver, c.typeTable)
|
||||
is DeserializedClassDescriptor -> ProtoContainer.Class(classProto, c.nameResolver, c.typeTable)
|
||||
else -> null // TODO: support annotations on lambdas and their parameters
|
||||
}
|
||||
}
|
||||
|
||||
+16
-7
@@ -19,16 +19,25 @@ package org.jetbrains.kotlin.serialization.deserialization
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.serialization.ProtoBuf
|
||||
|
||||
public data class ProtoContainer(
|
||||
val classProto: ProtoBuf.Class?,
|
||||
val packageFqName: FqName?,
|
||||
sealed class ProtoContainer(
|
||||
val nameResolver: NameResolver,
|
||||
val typeTable: TypeTable
|
||||
) {
|
||||
init {
|
||||
assert((classProto != null) xor (packageFqName != null))
|
||||
class Class(
|
||||
val classProto: ProtoBuf.Class,
|
||||
nameResolver: NameResolver,
|
||||
typeTable: TypeTable
|
||||
) : ProtoContainer(nameResolver, typeTable) {
|
||||
override fun debugFqName(): FqName = nameResolver.getClassId(classProto.fqName).asSingleFqName()
|
||||
}
|
||||
|
||||
fun getFqName(): FqName =
|
||||
packageFqName ?: nameResolver.getClassId(classProto!!.getFqName()).asSingleFqName()
|
||||
class Package(
|
||||
val fqName: FqName,
|
||||
nameResolver: NameResolver,
|
||||
typeTable: TypeTable
|
||||
) : ProtoContainer(nameResolver, typeTable) {
|
||||
override fun debugFqName(): FqName = fqName
|
||||
}
|
||||
|
||||
abstract fun debugFqName(): FqName
|
||||
}
|
||||
|
||||
+1
-1
@@ -296,7 +296,7 @@ public class DeserializedClassDescriptor(
|
||||
val annotations = enumEntryProtos[name]?.let { proto ->
|
||||
DeserializedAnnotations(c.storageManager) {
|
||||
c.components.annotationAndConstantLoader.loadEnumEntryAnnotations(
|
||||
ProtoContainer(classProto, null, c.nameResolver, c.typeTable), proto
|
||||
ProtoContainer.Class(classProto, c.nameResolver, c.typeTable), proto
|
||||
)
|
||||
}
|
||||
} ?: if (name in oldEnumEntryNames) Annotations.EMPTY
|
||||
|
||||
Reference in New Issue
Block a user