Refactor: allow to distinguish whether JvmMemberSignature is for field or for method

Introduce a method to create org.jetbrains.kotlin.load.kotlin.MemberSignature directly from JvmMemberSignature.
Create JvmFunctionSignature from JvmMemberSignature.
This commit is contained in:
Ilya Gorbunov
2018-05-27 18:42:30 +03:00
parent 36c658fd8b
commit 2f58539200
7 changed files with 59 additions and 24 deletions
@@ -12,7 +12,18 @@ package kotlinx.metadata.jvm
* @property desc JVM descriptor of a method, e.g. `(Ljava/lang/Object;)Z`, or a field type, e.g. `Ljava/lang/String;`
*/
data class JvmMemberSignature(val name: String, val desc: String) {
override fun toString() = name + desc
/**
* Returns `true` when this signature represents a field.
*/
val isField: Boolean get() = desc.indexOf("(") < 0
/**
* Returns `true` when this signature represents a method.
*/
val isMethod: Boolean get() = desc.indexOf("(") >= 0
override fun toString() = if (isField) name + ":" + desc else name + desc
}
internal fun org.jetbrains.kotlin.metadata.jvm.deserialization.JvmMemberSignature.wrapAsPublic() = JvmMemberSignature(name, desc)
@@ -132,10 +132,7 @@ private fun visitProperty(
sb.appendln(" // $versionRequirement")
}
if (jvmFieldDesc != null) {
// TODO: support that case in jvmFieldDesc.toString()
sb.append(" // field: ${jvmFieldDesc!!.name}")
sb.append(":").append(jvmFieldDesc!!.desc)
sb.appendln()
sb.appendln(" // field: $jvmFieldDesc")
}
if (jvmGetterDesc != null) {
sb.appendln(" // getter: $jvmGetterDesc")