Minor, add utility to get class name from StringTable via ClassId

This commit is contained in:
Alexander Udalov
2018-10-17 16:39:20 +02:00
parent 9183d7ca27
commit 19c79b906f
3 changed files with 8 additions and 5 deletions
@@ -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())
}
@@ -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
@@ -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