Move utilities about companion property fields to JvmAbi
To reuse that logic in reflection
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user