Minor, add utility to get class name from StringTable via ClassId
This commit is contained in:
+1
-1
@@ -81,7 +81,7 @@ class AnnotationSerializer(private val stringTable: DescriptorAwareStringTable)
|
|||||||
|
|
||||||
override fun visitEnumValue(value: EnumValue, data: Unit) {
|
override fun visitEnumValue(value: EnumValue, data: Unit) {
|
||||||
type = Type.ENUM
|
type = Type.ENUM
|
||||||
classId = stringTable.getQualifiedClassNameIndex(value.enumClassId.asString(), value.enumClassId.isLocal)
|
classId = stringTable.getQualifiedClassNameIndex(value.enumClassId)
|
||||||
enumValueId = stringTable.getStringIndex(value.enumEntryName.asString())
|
enumValueId = stringTable.getStringIndex(value.enumEntryName.asString())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+6
-3
@@ -13,16 +13,19 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.classId
|
|||||||
import org.jetbrains.kotlin.types.ErrorUtils
|
import org.jetbrains.kotlin.types.ErrorUtils
|
||||||
|
|
||||||
interface DescriptorAwareStringTable : StringTable {
|
interface DescriptorAwareStringTable : StringTable {
|
||||||
|
fun getQualifiedClassNameIndex(classId: ClassId): Int =
|
||||||
|
getQualifiedClassNameIndex(classId.asString(), classId.isLocal)
|
||||||
|
|
||||||
fun getFqNameIndex(descriptor: ClassifierDescriptorWithTypeParameters): Int {
|
fun getFqNameIndex(descriptor: ClassifierDescriptorWithTypeParameters): Int {
|
||||||
if (ErrorUtils.isError(descriptor)) {
|
if (ErrorUtils.isError(descriptor)) {
|
||||||
throw IllegalStateException("Cannot get FQ name of error class: ${renderDescriptor(descriptor)}")
|
throw IllegalStateException("Cannot get FQ name of error class: ${renderDescriptor(descriptor)}")
|
||||||
}
|
}
|
||||||
|
|
||||||
val classId = descriptor.classId
|
val classId = descriptor.classId
|
||||||
?: getLocalClassIdReplacement(descriptor)
|
?: getLocalClassIdReplacement(descriptor)
|
||||||
?: throw IllegalStateException("Cannot get FQ name of local class: ${renderDescriptor(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
|
fun getLocalClassIdReplacement(descriptor: ClassifierDescriptorWithTypeParameters): ClassId? = null
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ open class StringTableImpl : DescriptorAwareStringTable {
|
|||||||
override fun getQualifiedClassNameIndex(className: String, isLocal: Boolean): Int =
|
override fun getQualifiedClassNameIndex(className: String, isLocal: Boolean): Int =
|
||||||
getQualifiedClassNameIndex(ClassId.fromString(className, isLocal))
|
getQualifiedClassNameIndex(ClassId.fromString(className, isLocal))
|
||||||
|
|
||||||
private fun getQualifiedClassNameIndex(classId: ClassId): Int {
|
override fun getQualifiedClassNameIndex(classId: ClassId): Int {
|
||||||
val builder = QualifiedName.newBuilder()
|
val builder = QualifiedName.newBuilder()
|
||||||
builder.kind = QualifiedName.Kind.CLASS
|
builder.kind = QualifiedName.Kind.CLASS
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user