Introduce JvmMemberSignature to represent name and desc of jvm methods and fields

Return member name and desc in a class in order not to parse that information
from concatenated string when required.
This commit is contained in:
Ilya Gorbunov
2018-05-27 18:14:16 +03:00
parent eee9f8ab3f
commit 36c658fd8b
12 changed files with 91 additions and 77 deletions
@@ -19,7 +19,7 @@ private fun visitFunction(settings: KotlinpSettings, sb: StringBuilder, flags: F
var receiverParameterType: String? = null
var returnType: String? = null
var versionRequirement: String? = null
var jvmDesc: String? = null
var jvmDesc: JvmMemberSignature? = null
var lambdaClassOriginName: String? = null
override fun visitReceiverParameterType(flags: Flags): KmTypeVisitor? =
@@ -42,7 +42,7 @@ private fun visitFunction(settings: KotlinpSettings, sb: StringBuilder, flags: F
override fun visitExtensions(type: KmExtensionType): KmFunctionExtensionVisitor? {
if (type != JvmFunctionExtensionVisitor.TYPE) return null
return object : JvmFunctionExtensionVisitor() {
override fun visit(desc: String?) {
override fun visit(desc: JvmMemberSignature?) {
jvmDesc = desc
}
@@ -91,11 +91,10 @@ private fun visitProperty(
var returnType: String? = null
var setterParameter: String? = null
var versionRequirement: String? = null
var jvmFieldName: String? = null
var jvmFieldTypeDesc: String? = null
var jvmGetterDesc: String? = null
var jvmSetterDesc: String? = null
var jvmSyntheticMethodForAnnotationsDesc: String? = null
var jvmFieldDesc: JvmMemberSignature? = null
var jvmGetterDesc: JvmMemberSignature? = null
var jvmSetterDesc: JvmMemberSignature? = null
var jvmSyntheticMethodForAnnotationsDesc: JvmMemberSignature? = null
override fun visitReceiverParameterType(flags: Flags): KmTypeVisitor? =
printType(flags) { receiverParameterType = it }
@@ -115,14 +114,13 @@ private fun visitProperty(
override fun visitExtensions(type: KmExtensionType): KmPropertyExtensionVisitor? {
if (type != JvmPropertyExtensionVisitor.TYPE) return null
return object : JvmPropertyExtensionVisitor() {
override fun visit(fieldName: String?, fieldTypeDesc: String?, getterDesc: String?, setterDesc: String?) {
jvmFieldName = fieldName
jvmFieldTypeDesc = fieldTypeDesc
override fun visit(fieldDesc: JvmMemberSignature?, getterDesc: JvmMemberSignature?, setterDesc: JvmMemberSignature?) {
jvmFieldDesc = fieldDesc
jvmGetterDesc = getterDesc
jvmSetterDesc = setterDesc
}
override fun visitSyntheticMethodForAnnotations(desc: String?) {
override fun visitSyntheticMethodForAnnotations(desc: JvmMemberSignature?) {
jvmSyntheticMethodForAnnotationsDesc = desc
}
}
@@ -133,11 +131,10 @@ private fun visitProperty(
if (versionRequirement != null) {
sb.appendln(" // $versionRequirement")
}
if (jvmFieldName != null || jvmFieldTypeDesc != null) {
sb.append(" // field: ${jvmFieldName ?: "<null>"}")
if (jvmFieldTypeDesc != null) {
sb.append(":$jvmFieldTypeDesc")
}
if (jvmFieldDesc != null) {
// TODO: support that case in jvmFieldDesc.toString()
sb.append(" // field: ${jvmFieldDesc!!.name}")
sb.append(":").append(jvmFieldDesc!!.desc)
sb.appendln()
}
if (jvmGetterDesc != null) {
@@ -188,7 +185,7 @@ private fun visitConstructor(sb: StringBuilder, flags: Flags): KmConstructorVisi
object : KmConstructorVisitor() {
val params = mutableListOf<String>()
var versionRequirement: String? = null
var jvmDesc: String? = null
var jvmDesc: JvmMemberSignature? = null
override fun visitValueParameter(flags: Flags, name: String): KmValueParameterVisitor? =
printValueParameter(flags, name) { params.add(it) }
@@ -199,7 +196,7 @@ private fun visitConstructor(sb: StringBuilder, flags: Flags): KmConstructorVisi
override fun visitExtensions(type: KmExtensionType): KmConstructorExtensionVisitor? {
if (type != JvmConstructorExtensionVisitor.TYPE) return null
return object : JvmConstructorExtensionVisitor() {
override fun visit(desc: String?) {
override fun visit(desc: JvmMemberSignature?) {
jvmDesc = desc
}
}