Do not load implClassName JVM proto extension
Use JvmPackagePartSource instead for functions/properties in package parts, check containing class kind for properties in interfaces
This commit is contained in:
+2
-1
@@ -248,7 +248,8 @@ public class MemberDeserializer(private val c: DeserializationContext) {
|
||||
is DeserializedClassDescriptor -> ProtoContainer.Class(
|
||||
classProto, c.nameResolver, c.typeTable,
|
||||
isCompanionOfClass = DescriptorUtils.isCompanionObject(this) &&
|
||||
containingDeclaration.let { DescriptorUtils.isClass(it) || DescriptorUtils.isEnumClass(it) }
|
||||
containingDeclaration.let { DescriptorUtils.isClass(it) || DescriptorUtils.isEnumClass(it) },
|
||||
isInterface = kind == ClassKind.INTERFACE
|
||||
)
|
||||
else -> null // TODO: support annotations on lambdas and their parameters
|
||||
}
|
||||
|
||||
+6
-2
@@ -16,6 +16,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.serialization.deserialization
|
||||
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.serialization.ProtoBuf
|
||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.PackagePartSource
|
||||
@@ -28,9 +29,12 @@ sealed class ProtoContainer(
|
||||
val classProto: ProtoBuf.Class,
|
||||
nameResolver: NameResolver,
|
||||
typeTable: TypeTable,
|
||||
val isCompanionOfClass: Boolean
|
||||
val isCompanionOfClass: Boolean,
|
||||
val isInterface: Boolean
|
||||
) : ProtoContainer(nameResolver, typeTable) {
|
||||
override fun debugFqName(): FqName = nameResolver.getClassId(classProto.fqName).asSingleFqName()
|
||||
val classId: ClassId = nameResolver.getClassId(classProto.fqName)
|
||||
|
||||
override fun debugFqName(): FqName = classId.asSingleFqName()
|
||||
}
|
||||
|
||||
class Package(
|
||||
|
||||
+2
-1
@@ -296,7 +296,8 @@ public class DeserializedClassDescriptor(
|
||||
val annotations = enumEntryProtos[name]?.let { proto ->
|
||||
DeserializedAnnotations(c.storageManager) {
|
||||
c.components.annotationAndConstantLoader.loadEnumEntryAnnotations(
|
||||
ProtoContainer.Class(classProto, c.nameResolver, c.typeTable, isCompanionOfClass = false), proto
|
||||
ProtoContainer.Class(classProto, c.nameResolver, c.typeTable, isCompanionOfClass = false, isInterface = false),
|
||||
proto
|
||||
)
|
||||
}
|
||||
} ?: if (name in oldEnumEntryNames) Annotations.EMPTY
|
||||
|
||||
Reference in New Issue
Block a user