From 19c79b906f0d8a8dccaabfe1629c2f5649fa56f5 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Wed, 17 Oct 2018 16:39:20 +0200 Subject: [PATCH] Minor, add utility to get class name from StringTable via ClassId --- .../kotlin/serialization/AnnotationSerializer.kt | 2 +- .../kotlin/serialization/DescriptorAwareStringTable.kt | 9 ++++++--- .../jetbrains/kotlin/serialization/StringTableImpl.kt | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/compiler/serialization/src/org/jetbrains/kotlin/serialization/AnnotationSerializer.kt b/compiler/serialization/src/org/jetbrains/kotlin/serialization/AnnotationSerializer.kt index fadf2b1bd7e..96bf53a0fa7 100644 --- a/compiler/serialization/src/org/jetbrains/kotlin/serialization/AnnotationSerializer.kt +++ b/compiler/serialization/src/org/jetbrains/kotlin/serialization/AnnotationSerializer.kt @@ -81,7 +81,7 @@ class AnnotationSerializer(private val stringTable: DescriptorAwareStringTable) override fun visitEnumValue(value: EnumValue, data: Unit) { type = Type.ENUM - classId = stringTable.getQualifiedClassNameIndex(value.enumClassId.asString(), value.enumClassId.isLocal) + classId = stringTable.getQualifiedClassNameIndex(value.enumClassId) enumValueId = stringTable.getStringIndex(value.enumEntryName.asString()) } diff --git a/compiler/serialization/src/org/jetbrains/kotlin/serialization/DescriptorAwareStringTable.kt b/compiler/serialization/src/org/jetbrains/kotlin/serialization/DescriptorAwareStringTable.kt index 1200b801755..d659cbd6af9 100644 --- a/compiler/serialization/src/org/jetbrains/kotlin/serialization/DescriptorAwareStringTable.kt +++ b/compiler/serialization/src/org/jetbrains/kotlin/serialization/DescriptorAwareStringTable.kt @@ -13,16 +13,19 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.classId import org.jetbrains.kotlin.types.ErrorUtils interface DescriptorAwareStringTable : StringTable { + fun getQualifiedClassNameIndex(classId: ClassId): Int = + getQualifiedClassNameIndex(classId.asString(), classId.isLocal) + fun getFqNameIndex(descriptor: ClassifierDescriptorWithTypeParameters): Int { if (ErrorUtils.isError(descriptor)) { throw IllegalStateException("Cannot get FQ name of error class: ${renderDescriptor(descriptor)}") } val classId = descriptor.classId - ?: getLocalClassIdReplacement(descriptor) - ?: throw IllegalStateException("Cannot get FQ name of local class: ${renderDescriptor(descriptor)}") + ?: getLocalClassIdReplacement(descriptor) + ?: throw IllegalStateException("Cannot get FQ name of local class: ${renderDescriptor(descriptor)}") - return getQualifiedClassNameIndex(classId.asString(), classId.isLocal) + return getQualifiedClassNameIndex(classId) } fun getLocalClassIdReplacement(descriptor: ClassifierDescriptorWithTypeParameters): ClassId? = null diff --git a/compiler/serialization/src/org/jetbrains/kotlin/serialization/StringTableImpl.kt b/compiler/serialization/src/org/jetbrains/kotlin/serialization/StringTableImpl.kt index 6fa250e85f4..1a1e13a30ce 100644 --- a/compiler/serialization/src/org/jetbrains/kotlin/serialization/StringTableImpl.kt +++ b/compiler/serialization/src/org/jetbrains/kotlin/serialization/StringTableImpl.kt @@ -50,7 +50,7 @@ open class StringTableImpl : DescriptorAwareStringTable { override fun getQualifiedClassNameIndex(className: String, isLocal: Boolean): Int = getQualifiedClassNameIndex(ClassId.fromString(className, isLocal)) - private fun getQualifiedClassNameIndex(classId: ClassId): Int { + override fun getQualifiedClassNameIndex(classId: ClassId): Int { val builder = QualifiedName.newBuilder() builder.kind = QualifiedName.Kind.CLASS