Implement property references in JVM_IR
This commit is contained in:
@@ -30,6 +30,7 @@ import org.jetbrains.kotlin.descriptors.impl.LocalVariableAccessorDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.impl.LocalVariableDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.impl.TypeAliasConstructorDescriptor
|
||||
import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil
|
||||
import org.jetbrains.kotlin.ir.descriptors.IrPropertyDelegateDescriptor
|
||||
import org.jetbrains.kotlin.load.java.BuiltinMethodsWithSpecialGenericSignature
|
||||
import org.jetbrains.kotlin.load.java.JvmAbi
|
||||
import org.jetbrains.kotlin.load.java.descriptors.JavaCallableMemberDescriptor
|
||||
@@ -137,7 +138,8 @@ class KotlinTypeMapper @JvmOverloads constructor(
|
||||
val container = descriptor.containingDeclaration
|
||||
return when (container) {
|
||||
is PackageFragmentDescriptor -> {
|
||||
val packageMemberOwner = internalNameForPackageMemberOwner(descriptor as CallableMemberDescriptor, publicFacade)
|
||||
val packageMemberOwner =
|
||||
internalNameForPackageMemberOwner(descriptor as CallableMemberDescriptor, publicFacade, isIrBackend)
|
||||
Type.getObjectType(packageMemberOwner)
|
||||
}
|
||||
is ClassDescriptor -> mapClass((container as ClassDescriptor?)!!)
|
||||
@@ -1251,7 +1253,11 @@ class KotlinTypeMapper @JvmOverloads constructor(
|
||||
*/
|
||||
val LANGUAGE_VERSION_SETTINGS_DEFAULT: LanguageVersionSettings = LanguageVersionSettingsImpl.DEFAULT
|
||||
|
||||
private fun internalNameForPackageMemberOwner(callableDescriptor: CallableMemberDescriptor, publicFacade: Boolean): String {
|
||||
private fun internalNameForPackageMemberOwner(
|
||||
callableDescriptor: CallableMemberDescriptor,
|
||||
publicFacade: Boolean,
|
||||
isIrBackend: Boolean
|
||||
): String {
|
||||
val isAccessor: Boolean
|
||||
val descriptor = if (callableDescriptor is AccessorForCallableDescriptor<*>) {
|
||||
isAccessor = true
|
||||
@@ -1281,6 +1287,10 @@ class KotlinTypeMapper @JvmOverloads constructor(
|
||||
if (facadeFqName != null) return facadeFqName
|
||||
}
|
||||
|
||||
if (isIrBackend && directMember is IrPropertyDelegateDescriptor) {
|
||||
return internalNameForPackageMemberOwner(directMember.correspondingProperty, publicFacade, isIrBackend)
|
||||
}
|
||||
|
||||
// TODO: drop this usage and move IrBuiltinsPackageFragmentDescriptor to IR modules; it shouldn't be used here
|
||||
if (descriptor.containingDeclaration is IrBuiltinsPackageFragmentDescriptor) {
|
||||
return descriptor.containingDeclaration.name.asString()
|
||||
|
||||
Reference in New Issue
Block a user