Skip to content

Commit fb49220

Browse files
committed
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.
1 parent 126d724 commit fb49220

File tree

2 files changed

+13
-18
lines changed

2 files changed

+13
-18
lines changed

src/main/kotlin/org.jetbrains.kotlin.tools/kotlinMetadataVisibilities.kt

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -45,71 +45,66 @@ private val VISIBILITY_FLAGS_MAP = mapOf(
4545
)
4646

4747
private fun Flags.toVisibility() = VISIBILITY_FLAGS_MAP.entries.firstOrNull { (modifier) -> modifier(this) }?.value
48-
private fun String.toMemberSignature() = indexOf("(").let { i ->
49-
if (i < 0) MemberSignature("", this) else MemberSignature(substring(0, i), substring(i))
50-
}
5148

5249
private fun visitFunction(flags: Flags, name: String, addMember: (MemberVisibility) -> Unit) =
5350
object : KmFunctionVisitor() {
54-
var jvmDesc: String? = null
51+
var jvmDesc: JvmMemberSignature? = null
5552
override fun visitExtensions(type: KmExtensionType): KmFunctionExtensionVisitor? {
5653
if (type != JvmFunctionExtensionVisitor.TYPE) return null
5754
return object : JvmFunctionExtensionVisitor() {
58-
override fun visit(desc: String?) {
55+
override fun visit(desc: JvmMemberSignature?) {
5956
jvmDesc = desc
6057
}
6158
}
6259
}
6360

6461
override fun visitEnd() {
6562
jvmDesc?.let { jvmDesc ->
66-
addMember(MemberVisibility(jvmDesc.toMemberSignature(), flags))
63+
addMember(MemberVisibility(jvmDesc, flags))
6764
}
6865
}
6966
}
7067

7168
private fun visitConstructor(flags: Flags, addMember: (MemberVisibility) -> Unit) =
7269
object : KmConstructorVisitor() {
73-
var jvmDesc: String? = null
70+
var jvmDesc: JvmMemberSignature? = null
7471
override fun visitExtensions(type: KmExtensionType): KmConstructorExtensionVisitor? {
7572
if (type != JvmConstructorExtensionVisitor.TYPE) return null
7673
return object : JvmConstructorExtensionVisitor() {
77-
override fun visit(desc: String?) {
74+
override fun visit(desc: JvmMemberSignature?) {
7875
jvmDesc = desc
7976
}
8077
}
8178
}
8279

8380
override fun visitEnd() {
84-
jvmDesc?.toMemberSignature()?.let { signature ->
81+
jvmDesc?.let { signature ->
8582
addMember(MemberVisibility(signature, flags))
8683
}
8784
}
8885
}
8986

9087
private fun visitProperty(flags: Flags, name: String, getterFlags: Flags, setterFlags: Flags, addMember: (MemberVisibility) -> Unit) =
9188
object : KmPropertyVisitor() {
92-
var fieldDesc: MemberSignature? = null
89+
var _fieldDesc: MemberSignature? = null
9390
var _getterDesc: MemberSignature? = null
9491
var _setterDesc: MemberSignature? = null
9592

9693
override fun visitExtensions(type: KmExtensionType): KmPropertyExtensionVisitor? {
9794
if (type != JvmPropertyExtensionVisitor.TYPE) return null
9895
return object : JvmPropertyExtensionVisitor() {
99-
override fun visit(fieldName: String?, fieldTypeDesc: String?, getterDesc: String?, setterDesc: String?) {
100-
if (fieldName != null && fieldTypeDesc != null)
101-
fieldDesc = MemberSignature(fieldName, fieldTypeDesc)
102-
103-
_getterDesc = getterDesc?.toMemberSignature()
104-
_setterDesc = setterDesc?.toMemberSignature()
96+
override fun visit(fieldDesc: JvmMemberSignature?, getterDesc: JvmMemberSignature?, setterDesc: JvmMemberSignature?) {
97+
_fieldDesc = fieldDesc
98+
_getterDesc = getterDesc
99+
_setterDesc = setterDesc
105100
}
106101
}
107102
}
108103

109104
override fun visitEnd() {
110105
_getterDesc?.let { addMember(MemberVisibility(it, getterFlags)) }
111106
_setterDesc?.let { addMember(MemberVisibility(it, setterFlags)) }
112-
fieldDesc?.let {
107+
_fieldDesc?.let {
113108
val fieldVisibility = when {
114109
Flag.Property.IS_LATEINIT(flags) -> setterFlags
115110
_getterDesc == null && _setterDesc == null -> flags // JvmField or const case

src/main/kotlin/org.jetbrains.kotlin.tools/kotlinVisibilities.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ fun ClassVisibility.findMember(signature: MemberSignature): MemberVisibility? =
2626

2727

2828
data class MemberVisibility(val member: MemberSignature, val visibility: Flags?)
29-
data class MemberSignature(val name: String, val desc: String)
29+
typealias MemberSignature = kotlinx.metadata.jvm.JvmMemberSignature
3030

3131
private fun isPublic(visibility: Flags?, isPublishedApi: Boolean) =
3232
visibility == null

0 commit comments

Comments
 (0)