JVM_IR: remove descriptor usage from JvmCachedDeclarations
This commit is contained in:
+6
-2
@@ -13,6 +13,8 @@ import org.jetbrains.kotlin.backend.jvm.codegen.MethodSignatureMapper
|
||||
import org.jetbrains.kotlin.backend.jvm.codegen.isJvmInterface
|
||||
import org.jetbrains.kotlin.backend.jvm.ir.copyCorrespondingPropertyFrom
|
||||
import org.jetbrains.kotlin.backend.jvm.ir.replaceThisByStaticReference
|
||||
import org.jetbrains.kotlin.builtins.CompanionObjectMapping
|
||||
import org.jetbrains.kotlin.builtins.isMappedIntrinsicCompanionObjectClassId
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
|
||||
@@ -25,7 +27,6 @@ import org.jetbrains.kotlin.ir.builders.setSourceRange
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
|
||||
import org.jetbrains.kotlin.ir.util.*
|
||||
import org.jetbrains.kotlin.load.java.DescriptorsJvmAbiUtil.isMappedIntrinsicCompanionObject
|
||||
import org.jetbrains.kotlin.load.java.JavaDescriptorVisibilities
|
||||
import org.jetbrains.kotlin.load.java.JvmAbi
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
@@ -62,7 +63,7 @@ class JvmCachedDeclarations(
|
||||
fun getFieldForObjectInstance(singleton: IrClass): IrField =
|
||||
singletonFieldDeclarations.getOrPut(singleton) {
|
||||
val originalVisibility = singleton.visibility
|
||||
val isNotMappedCompanion = singleton.isCompanion && !isMappedIntrinsicCompanionObject(singleton.descriptor)
|
||||
val isNotMappedCompanion = singleton.isCompanion && !singleton.isMappedIntrinsicCompanionObject()
|
||||
val useProperVisibilityForCompanion =
|
||||
languageVersionSettings.supportsFeature(LanguageFeature.ProperVisibilityForCompanionObjectInstanceField)
|
||||
&& singleton.isCompanion
|
||||
@@ -84,6 +85,9 @@ class JvmCachedDeclarations(
|
||||
}
|
||||
}
|
||||
|
||||
private fun IrClass.isMappedIntrinsicCompanionObject() =
|
||||
isCompanion && classId?.let { CompanionObjectMapping.isMappedIntrinsicCompanionObjectClassId(it) } == true
|
||||
|
||||
fun getPrivateFieldForObjectInstance(singleton: IrClass): IrField =
|
||||
if (singleton.isCompanion && singleton.parentAsClass.isJvmInterface)
|
||||
interfaceCompanionFieldDeclarations.getOrPut(singleton) {
|
||||
|
||||
@@ -6,8 +6,12 @@
|
||||
package org.jetbrains.kotlin.builtins
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.classId
|
||||
|
||||
fun CompanionObjectMapping.isMappedIntrinsicCompanionObject(classDescriptor: ClassDescriptor): Boolean =
|
||||
DescriptorUtils.isCompanionObject(classDescriptor) && classDescriptor.classId?.outerClassId in classIds
|
||||
|
||||
fun CompanionObjectMapping.isMappedIntrinsicCompanionObjectClassId(classId: ClassId): Boolean =
|
||||
classId.outerClassId in classIds
|
||||
Reference in New Issue
Block a user