Rename "desc" parameters in kotlinx-metadata-jvm to "signature"

This commit is contained in:
Alexander Udalov
2019-05-06 17:58:14 +02:00
parent 4e15b95d17
commit fe52f5fc7c
6 changed files with 97 additions and 91 deletions
@@ -3,6 +3,7 @@
## 0.0.6 ## 0.0.6
- [`KT-31308`](https://youtrack.jetbrains.com/issue/KT-31308) Add module name extensions to kotlinx-metadata-jvm - [`KT-31308`](https://youtrack.jetbrains.com/issue/KT-31308) Add module name extensions to kotlinx-metadata-jvm
- Rename `desc` parameters to `signature` in JvmFunctionExtensionVisitor, JvmPropertyExtensionVisitor, JvmConstructorExtensionVisitor
## 0.0.5 ## 0.0.5
@@ -148,9 +148,9 @@ internal class JvmMetadataExtensions : MetadataExtensions {
): KmFunctionExtensionVisitor? { ): KmFunctionExtensionVisitor? {
if (type != JvmFunctionExtensionVisitor.TYPE) return null if (type != JvmFunctionExtensionVisitor.TYPE) return null
return object : JvmFunctionExtensionVisitor() { return object : JvmFunctionExtensionVisitor() {
override fun visit(desc: JvmMethodSignature?) { override fun visit(signature: JvmMethodSignature?) {
if (desc != null) { if (signature != null) {
proto.setExtension(JvmProtoBuf.methodSignature, desc.toJvmMethodSignature(c)) proto.setExtension(JvmProtoBuf.methodSignature, signature.toJvmMethodSignature(c))
} }
} }
@@ -167,36 +167,38 @@ internal class JvmMetadataExtensions : MetadataExtensions {
return object : JvmPropertyExtensionVisitor() { return object : JvmPropertyExtensionVisitor() {
var signature: JvmProtoBuf.JvmPropertySignature.Builder? = null var signature: JvmProtoBuf.JvmPropertySignature.Builder? = null
override fun visit(fieldDesc: JvmFieldSignature?, getterDesc: JvmMethodSignature?, setterDesc: JvmMethodSignature?) { override fun visit(
if (fieldDesc == null && getterDesc == null && setterDesc == null) return fieldSignature: JvmFieldSignature?, getterSignature: JvmMethodSignature?, setterSignature: JvmMethodSignature?
) {
if (fieldSignature == null && getterSignature == null && setterSignature == null) return
if (signature == null) { if (signature == null) {
signature = JvmProtoBuf.JvmPropertySignature.newBuilder() signature = JvmProtoBuf.JvmPropertySignature.newBuilder()
} }
signature!!.apply { signature!!.apply {
if (fieldDesc != null) { if (fieldSignature != null) {
field = JvmProtoBuf.JvmFieldSignature.newBuilder().also { field -> field = JvmProtoBuf.JvmFieldSignature.newBuilder().also { field ->
field.name = c[fieldDesc.name] field.name = c[fieldSignature.name]
field.desc = c[fieldDesc.desc] field.desc = c[fieldSignature.desc]
}.build() }.build()
} }
if (getterDesc != null) { if (getterSignature != null) {
getter = getterDesc.toJvmMethodSignature(c) getter = getterSignature.toJvmMethodSignature(c)
} }
if (setterDesc != null) { if (setterSignature != null) {
setter = setterDesc.toJvmMethodSignature(c) setter = setterSignature.toJvmMethodSignature(c)
} }
} }
} }
override fun visitSyntheticMethodForAnnotations(desc: JvmMethodSignature?) { override fun visitSyntheticMethodForAnnotations(signature: JvmMethodSignature?) {
if (desc == null) return if (signature == null) return
if (signature == null) { if (this.signature == null) {
signature = JvmProtoBuf.JvmPropertySignature.newBuilder() this.signature = JvmProtoBuf.JvmPropertySignature.newBuilder()
} }
signature!!.syntheticMethod = desc.toJvmMethodSignature(c) this.signature!!.syntheticMethod = signature.toJvmMethodSignature(c)
} }
override fun visitEnd() { override fun visitEnd() {
@@ -212,9 +214,9 @@ internal class JvmMetadataExtensions : MetadataExtensions {
): KmConstructorExtensionVisitor? { ): KmConstructorExtensionVisitor? {
if (type != JvmConstructorExtensionVisitor.TYPE) return null if (type != JvmConstructorExtensionVisitor.TYPE) return null
return object : JvmConstructorExtensionVisitor() { return object : JvmConstructorExtensionVisitor() {
override fun visit(desc: JvmMethodSignature?) { override fun visit(signature: JvmMethodSignature?) {
if (desc != null) { if (signature != null) {
proto.setExtension(JvmProtoBuf.constructorSignature, desc.toJvmMethodSignature(c)) proto.setExtension(JvmProtoBuf.constructorSignature, signature.toJvmMethodSignature(c))
} }
} }
} }
@@ -115,10 +115,10 @@ open class JvmFunctionExtensionVisitor @JvmOverloads constructor(
* *
* Example: `JvmMethodSignature("equals", "(Ljava/lang/Object;)Z")` * Example: `JvmMethodSignature("equals", "(Ljava/lang/Object;)Z")`
* *
* @param desc the signature of the function * @param signature the signature of the function
*/ */
open fun visit(desc: JvmMethodSignature?) { open fun visit(signature: JvmMethodSignature?) {
delegate?.visit(desc) delegate?.visit(signature)
} }
/** /**
@@ -156,19 +156,17 @@ open class JvmPropertyExtensionVisitor @JvmOverloads constructor(
/** /**
* Visits JVM signatures of field and accessors generated for the property. * Visits JVM signatures of field and accessors generated for the property.
* *
* @param fieldDesc the name and the type of the field in the JVM-based format, or `null` if this property has no field. * @param fieldSignature the signature of the field, or `null` if this property has no field.
* Example: `JvmFieldSignature("X", "Ljava/lang/Object;")` * Example: `JvmFieldSignature("X", "Ljava/lang/Object;")`
* *
* @param getterDesc the signature of the property getter in the JVM-based format, * @param getterSignature the signature of the property getter, or `null` if this property has no getter or its signature is unknown.
* or `null` if this property has no getter or its signature is unknown. * Example: `JvmMethodSignature("getX()", "Ljava/lang/Object;")`
* Example: `JvmMethodSignature("getX()", "Ljava/lang/Object;")`
* *
* @param setterDesc the signature of the property setter in the JVM-based format, * @param setterSignature the signature of the property setter, or `null` if this property has no setter or its signature is unknown.
* or `null` if this property has no setter or its signature is unknown * Example: `JvmMethodSignature("setX", "(Ljava/lang/Object;)V")`
* Example: `JvmMethodSignature("setX", "(Ljava/lang/Object;)V")`,
*/ */
open fun visit(fieldDesc: JvmFieldSignature?, getterDesc: JvmMethodSignature?, setterDesc: JvmMethodSignature?) { open fun visit(fieldSignature: JvmFieldSignature?, getterSignature: JvmMethodSignature?, setterSignature: JvmMethodSignature?) {
delegate?.visit(fieldDesc, getterDesc, setterDesc) delegate?.visit(fieldSignature, getterSignature, setterSignature)
} }
/** /**
@@ -176,10 +174,10 @@ open class JvmPropertyExtensionVisitor @JvmOverloads constructor(
* *
* Example: `JvmMethodSignature("getX$annotations", "()V")` * Example: `JvmMethodSignature("getX$annotations", "()V")`
* *
* @param desc the signature of the synthetic method * @param signature the signature of the synthetic method
*/ */
open fun visitSyntheticMethodForAnnotations(desc: JvmMethodSignature?) { open fun visitSyntheticMethodForAnnotations(signature: JvmMethodSignature?) {
delegate?.visitSyntheticMethodForAnnotations(desc) delegate?.visitSyntheticMethodForAnnotations(signature)
} }
/** /**
@@ -207,15 +205,14 @@ open class JvmConstructorExtensionVisitor @JvmOverloads constructor(
private val delegate: JvmConstructorExtensionVisitor? = null private val delegate: JvmConstructorExtensionVisitor? = null
) : KmConstructorExtensionVisitor { ) : KmConstructorExtensionVisitor {
/** /**
* Visits the JVM signature of the constructor in the JVM-based format, * Visits the JVM signature of the constructor, or null if the JVM signature of this constructor is unknown.
* or null if the JVM signature of this constructor is unknown.
* *
* Example: `JvmMethodSignature("<init>", "(Ljava/lang/Object;)V")` * Example: `JvmMethodSignature("<init>", "(Ljava/lang/Object;)V")`
* *
* @param desc the signature of the constructor * @param signature the signature of the constructor
*/ */
open fun visit(desc: JvmMethodSignature?) { open fun visit(signature: JvmMethodSignature?) {
delegate?.visit(desc) delegate?.visit(signature)
} }
companion object { companion object {
@@ -41,9 +41,9 @@ class MetadataSmokeTest {
if (type != JvmFunctionExtensionVisitor.TYPE) return null if (type != JvmFunctionExtensionVisitor.TYPE) return null
return object : JvmFunctionExtensionVisitor() { return object : JvmFunctionExtensionVisitor() {
override fun visit(desc: JvmMethodSignature?) { override fun visit(signature: JvmMethodSignature?) {
if (Flag.Function.IS_INLINE(flags) && desc != null) { if (Flag.Function.IS_INLINE(flags) && signature != null) {
inlineFunctions += desc.asString() inlineFunctions += signature.asString()
} }
} }
} }
@@ -48,18 +48,19 @@ private fun Flags.toVisibility() = VISIBILITY_FLAGS_MAP.entries.firstOrNull { (m
private fun visitFunction(flags: Flags, name: String, addMember: (MemberVisibility) -> Unit) = private fun visitFunction(flags: Flags, name: String, addMember: (MemberVisibility) -> Unit) =
object : KmFunctionVisitor() { object : KmFunctionVisitor() {
var jvmDesc: JvmMemberSignature? = null var desc: JvmMemberSignature? = null
override fun visitExtensions(type: KmExtensionType): KmFunctionExtensionVisitor? { override fun visitExtensions(type: KmExtensionType): KmFunctionExtensionVisitor? {
if (type != JvmFunctionExtensionVisitor.TYPE) return null if (type != JvmFunctionExtensionVisitor.TYPE) return null
return object : JvmFunctionExtensionVisitor() { return object : JvmFunctionExtensionVisitor() {
override fun visit(desc: JvmMethodSignature?) { override fun visit(signature: JvmMethodSignature?) {
jvmDesc = desc desc = signature
} }
} }
} }
override fun visitEnd() { override fun visitEnd() {
jvmDesc?.let { jvmDesc -> desc?.let { jvmDesc ->
addMember(MemberVisibility(jvmDesc, flags)) addMember(MemberVisibility(jvmDesc, flags))
} }
} }
@@ -67,18 +68,19 @@ private fun visitFunction(flags: Flags, name: String, addMember: (MemberVisibili
private fun visitConstructor(flags: Flags, addMember: (MemberVisibility) -> Unit) = private fun visitConstructor(flags: Flags, addMember: (MemberVisibility) -> Unit) =
object : KmConstructorVisitor() { object : KmConstructorVisitor() {
var jvmDesc: JvmMemberSignature? = null var desc: JvmMemberSignature? = null
override fun visitExtensions(type: KmExtensionType): KmConstructorExtensionVisitor? { override fun visitExtensions(type: KmExtensionType): KmConstructorExtensionVisitor? {
if (type != JvmConstructorExtensionVisitor.TYPE) return null if (type != JvmConstructorExtensionVisitor.TYPE) return null
return object : JvmConstructorExtensionVisitor() { return object : JvmConstructorExtensionVisitor() {
override fun visit(desc: JvmMethodSignature?) { override fun visit(signature: JvmMethodSignature?) {
jvmDesc = desc desc = signature
} }
} }
} }
override fun visitEnd() { override fun visitEnd() {
jvmDesc?.let { signature -> desc?.let { signature ->
addMember(MemberVisibility(signature, flags)) addMember(MemberVisibility(signature, flags))
} }
} }
@@ -86,28 +88,30 @@ private fun visitConstructor(flags: Flags, addMember: (MemberVisibility) -> Unit
private fun visitProperty(flags: Flags, name: String, getterFlags: Flags, setterFlags: Flags, addMember: (MemberVisibility) -> Unit) = private fun visitProperty(flags: Flags, name: String, getterFlags: Flags, setterFlags: Flags, addMember: (MemberVisibility) -> Unit) =
object : KmPropertyVisitor() { object : KmPropertyVisitor() {
var _fieldDesc: JvmMemberSignature? = null var fieldDesc: JvmMemberSignature? = null
var _getterDesc: JvmMemberSignature? = null var getterDesc: JvmMemberSignature? = null
var _setterDesc: JvmMemberSignature? = null var setterDesc: JvmMemberSignature? = null
override fun visitExtensions(type: KmExtensionType): KmPropertyExtensionVisitor? { override fun visitExtensions(type: KmExtensionType): KmPropertyExtensionVisitor? {
if (type != JvmPropertyExtensionVisitor.TYPE) return null if (type != JvmPropertyExtensionVisitor.TYPE) return null
return object : JvmPropertyExtensionVisitor() { return object : JvmPropertyExtensionVisitor() {
override fun visit(fieldDesc: JvmFieldSignature?, getterDesc: JvmMethodSignature?, setterDesc: JvmMethodSignature?) { override fun visit(
_fieldDesc = fieldDesc fieldSignature: JvmFieldSignature?, getterSignature: JvmMethodSignature?, setterSignature: JvmMethodSignature?
_getterDesc = getterDesc ) {
_setterDesc = setterDesc fieldDesc = fieldSignature
getterDesc = getterSignature
setterDesc = setterSignature
} }
} }
} }
override fun visitEnd() { override fun visitEnd() {
_getterDesc?.let { addMember(MemberVisibility(it, getterFlags)) } getterDesc?.let { addMember(MemberVisibility(it, getterFlags)) }
_setterDesc?.let { addMember(MemberVisibility(it, setterFlags)) } setterDesc?.let { addMember(MemberVisibility(it, setterFlags)) }
_fieldDesc?.let { fieldDesc?.let {
val fieldVisibility = when { val fieldVisibility = when {
Flag.Property.IS_LATEINIT(flags) -> setterFlags Flag.Property.IS_LATEINIT(flags) -> setterFlags
_getterDesc == null && _setterDesc == null -> flags // JvmField or const case getterDesc == null && setterDesc == null -> flags // JvmField or const case
else -> flagsOf(Flag.IS_PRIVATE) else -> flagsOf(Flag.IS_PRIVATE)
} }
addMember(MemberVisibility(it, fieldVisibility)) addMember(MemberVisibility(it, fieldVisibility))
@@ -19,7 +19,7 @@ private fun visitFunction(settings: KotlinpSettings, sb: StringBuilder, flags: F
var receiverParameterType: String? = null var receiverParameterType: String? = null
var returnType: String? = null var returnType: String? = null
val versionRequirements = mutableListOf<String>() val versionRequirements = mutableListOf<String>()
var jvmDesc: JvmMemberSignature? = null var jvmSignature: JvmMemberSignature? = null
var lambdaClassOriginName: String? = null var lambdaClassOriginName: String? = null
override fun visitReceiverParameterType(flags: Flags): KmTypeVisitor? = override fun visitReceiverParameterType(flags: Flags): KmTypeVisitor? =
@@ -42,8 +42,8 @@ private fun visitFunction(settings: KotlinpSettings, sb: StringBuilder, flags: F
override fun visitExtensions(type: KmExtensionType): KmFunctionExtensionVisitor? { override fun visitExtensions(type: KmExtensionType): KmFunctionExtensionVisitor? {
if (type != JvmFunctionExtensionVisitor.TYPE) return null if (type != JvmFunctionExtensionVisitor.TYPE) return null
return object : JvmFunctionExtensionVisitor() { return object : JvmFunctionExtensionVisitor() {
override fun visit(desc: JvmMethodSignature?) { override fun visit(signature: JvmMethodSignature?) {
jvmDesc = desc jvmSignature = signature
} }
override fun visitLambdaClassOriginName(internalName: String) { override fun visitLambdaClassOriginName(internalName: String) {
@@ -60,8 +60,8 @@ private fun visitFunction(settings: KotlinpSettings, sb: StringBuilder, flags: F
for (versionRequirement in versionRequirements) { for (versionRequirement in versionRequirements) {
sb.appendln(" // $versionRequirement") sb.appendln(" // $versionRequirement")
} }
if (jvmDesc != null) { if (jvmSignature != null) {
sb.appendln(" // signature: $jvmDesc") sb.appendln(" // signature: $jvmSignature")
} }
sb.append(" ") sb.append(" ")
sb.appendFlags(flags, FUNCTION_FLAGS_MAP) sb.appendFlags(flags, FUNCTION_FLAGS_MAP)
@@ -91,10 +91,10 @@ private fun visitProperty(
var returnType: String? = null var returnType: String? = null
var setterParameter: String? = null var setterParameter: String? = null
val versionRequirements = mutableListOf<String>() val versionRequirements = mutableListOf<String>()
var jvmFieldDesc: JvmMemberSignature? = null var jvmFieldSignature: JvmMemberSignature? = null
var jvmGetterDesc: JvmMemberSignature? = null var jvmGetterSignature: JvmMemberSignature? = null
var jvmSetterDesc: JvmMemberSignature? = null var jvmSetterSignature: JvmMemberSignature? = null
var jvmSyntheticMethodForAnnotationsDesc: JvmMemberSignature? = null var jvmSyntheticMethodForAnnotationsSignature: JvmMemberSignature? = null
override fun visitReceiverParameterType(flags: Flags): KmTypeVisitor? = override fun visitReceiverParameterType(flags: Flags): KmTypeVisitor? =
printType(flags) { receiverParameterType = it } printType(flags) { receiverParameterType = it }
@@ -114,14 +114,16 @@ private fun visitProperty(
override fun visitExtensions(type: KmExtensionType): KmPropertyExtensionVisitor? { override fun visitExtensions(type: KmExtensionType): KmPropertyExtensionVisitor? {
if (type != JvmPropertyExtensionVisitor.TYPE) return null if (type != JvmPropertyExtensionVisitor.TYPE) return null
return object : JvmPropertyExtensionVisitor() { return object : JvmPropertyExtensionVisitor() {
override fun visit(fieldDesc: JvmFieldSignature?, getterDesc: JvmMethodSignature?, setterDesc: JvmMethodSignature?) { override fun visit(
jvmFieldDesc = fieldDesc fieldSignature: JvmFieldSignature?, getterSignature: JvmMethodSignature?, setterSignature: JvmMethodSignature?
jvmGetterDesc = getterDesc ) {
jvmSetterDesc = setterDesc jvmFieldSignature = fieldSignature
jvmGetterSignature = getterSignature
jvmSetterSignature = setterSignature
} }
override fun visitSyntheticMethodForAnnotations(desc: JvmMethodSignature?) { override fun visitSyntheticMethodForAnnotations(signature: JvmMethodSignature?) {
jvmSyntheticMethodForAnnotationsDesc = desc jvmSyntheticMethodForAnnotationsSignature = signature
} }
} }
} }
@@ -131,17 +133,17 @@ private fun visitProperty(
for (versionRequirement in versionRequirements) { for (versionRequirement in versionRequirements) {
sb.appendln(" // $versionRequirement") sb.appendln(" // $versionRequirement")
} }
if (jvmFieldDesc != null) { if (jvmFieldSignature != null) {
sb.appendln(" // field: $jvmFieldDesc") sb.appendln(" // field: $jvmFieldSignature")
} }
if (jvmGetterDesc != null) { if (jvmGetterSignature != null) {
sb.appendln(" // getter: $jvmGetterDesc") sb.appendln(" // getter: $jvmGetterSignature")
} }
if (jvmSetterDesc != null) { if (jvmSetterSignature != null) {
sb.appendln(" // setter: $jvmSetterDesc") sb.appendln(" // setter: $jvmSetterSignature")
} }
if (jvmSyntheticMethodForAnnotationsDesc != null) { if (jvmSyntheticMethodForAnnotationsSignature != null) {
sb.appendln(" // synthetic method for annotations: $jvmSyntheticMethodForAnnotationsDesc") sb.appendln(" // synthetic method for annotations: $jvmSyntheticMethodForAnnotationsSignature")
} }
sb.append(" ") sb.append(" ")
sb.appendFlags(flags, PROPERTY_FLAGS_MAP) sb.appendFlags(flags, PROPERTY_FLAGS_MAP)
@@ -182,7 +184,7 @@ private fun visitConstructor(sb: StringBuilder, flags: Flags): KmConstructorVisi
object : KmConstructorVisitor() { object : KmConstructorVisitor() {
val params = mutableListOf<String>() val params = mutableListOf<String>()
val versionRequirements = mutableListOf<String>() val versionRequirements = mutableListOf<String>()
var jvmDesc: JvmMemberSignature? = null var jvmSignature: JvmMemberSignature? = null
override fun visitValueParameter(flags: Flags, name: String): KmValueParameterVisitor? = override fun visitValueParameter(flags: Flags, name: String): KmValueParameterVisitor? =
printValueParameter(flags, name) { params.add(it) } printValueParameter(flags, name) { params.add(it) }
@@ -193,8 +195,8 @@ private fun visitConstructor(sb: StringBuilder, flags: Flags): KmConstructorVisi
override fun visitExtensions(type: KmExtensionType): KmConstructorExtensionVisitor? { override fun visitExtensions(type: KmExtensionType): KmConstructorExtensionVisitor? {
if (type != JvmConstructorExtensionVisitor.TYPE) return null if (type != JvmConstructorExtensionVisitor.TYPE) return null
return object : JvmConstructorExtensionVisitor() { return object : JvmConstructorExtensionVisitor() {
override fun visit(desc: JvmMethodSignature?) { override fun visit(signature: JvmMethodSignature?) {
jvmDesc = desc jvmSignature = signature
} }
} }
} }
@@ -204,8 +206,8 @@ private fun visitConstructor(sb: StringBuilder, flags: Flags): KmConstructorVisi
for (versionRequirement in versionRequirements) { for (versionRequirement in versionRequirements) {
sb.appendln(" // $versionRequirement") sb.appendln(" // $versionRequirement")
} }
if (jvmDesc != null) { if (jvmSignature != null) {
sb.appendln(" // signature: $jvmDesc") sb.appendln(" // signature: $jvmSignature")
} }
sb.append(" ") sb.append(" ")
sb.appendFlags(flags, CONSTRUCTOR_FLAGS_MAP) sb.appendFlags(flags, CONSTRUCTOR_FLAGS_MAP)