Move utilities about companion property fields to JvmAbi

To reuse that logic in reflection
This commit is contained in:
Alexander Udalov
2015-12-25 19:27:52 +03:00
parent 0685f06200
commit 3513a64351
9 changed files with 34 additions and 28 deletions
@@ -16,10 +16,8 @@
package kotlin.reflect.jvm.internal
import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
import org.jetbrains.kotlin.resolve.DescriptorUtils.isClassOrEnumClass
import org.jetbrains.kotlin.resolve.DescriptorUtils.isCompanionObject
import org.jetbrains.kotlin.load.java.JvmAbi
import org.jetbrains.kotlin.serialization.jvm.JvmProtoBufUtil
import java.lang.reflect.Field
import kotlin.reflect.jvm.internal.JvmPropertySignature.JavaField
@@ -53,10 +51,9 @@ internal abstract class DescriptorBasedProperty<out R> protected constructor(
when (jvmSignature) {
is KotlinProperty -> {
JvmProtoBufUtil.getJvmFieldSignature(jvmSignature.proto, jvmSignature.nameResolver, jvmSignature.typeTable)?.let {
val isCompanionOfClass = (descriptor.containingDeclaration as? ClassDescriptor)?.let { containingClass ->
isCompanionObject(containingClass) && isClassOrEnumClass(containingClass.containingDeclaration)
} ?: false
container.findFieldBySignature(it.name, isCompanionOfClass)
container.findFieldBySignature(
it.name, JvmAbi.isCompanionObjectWithBackingFieldsInOuter(descriptor.containingDeclaration)
)
}
}
is JavaField -> jvmSignature.field