[K/N] Implement objc overridablity condition for IR
^KT-61511
This commit is contained in:
committed by
Space Team
parent
202f30f910
commit
156c341eeb
+2
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.ir.IrBuiltIns
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrExternalPackageFragmentImpl
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
|
||||
import org.jetbrains.kotlin.ir.overrides.IrExternalOverridabilityCondition
|
||||
import org.jetbrains.kotlin.ir.symbols.impl.DescriptorlessExternalPackageFragmentSymbol
|
||||
import org.jetbrains.kotlin.ir.util.*
|
||||
import org.jetbrains.kotlin.load.java.JvmAnnotationNames
|
||||
@@ -32,6 +33,7 @@ class JvmFir2IrExtensions(
|
||||
private val irDeserializer: JvmIrDeserializer,
|
||||
private val mangler: KotlinMangler.IrMangler,
|
||||
) : Fir2IrExtensions, JvmGeneratorExtensions {
|
||||
override val externalOverridabilityConditions: List<IrExternalOverridabilityCondition> = emptyList() // TODO: KT-61370, KT-61804
|
||||
override val classNameOverride: MutableMap<IrClass, JvmClassName> = mutableMapOf()
|
||||
override val cachedFields = CachedFieldsForObjectInstances(IrFactoryImpl, configuration.languageVersionSettings)
|
||||
|
||||
|
||||
@@ -561,7 +561,7 @@ class Fir2IrConverter(
|
||||
IrFakeOverrideBuilder(
|
||||
typeContextProvider(irBuiltins),
|
||||
Fir2IrFakeOverrideStrategy(friendModulesMap(session), commonMemberStorage.symbolTable, irMangler),
|
||||
externalOverridabilityConditions = emptyList(), // TODO: KT-61370, KT-61804.
|
||||
fir2IrExtensions.externalOverridabilityConditions
|
||||
)
|
||||
},
|
||||
moduleDescriptor, commonMemberStorage, irMangler, specialSymbolProvider, initializedIrBuiltIns
|
||||
|
||||
@@ -8,10 +8,12 @@ package org.jetbrains.kotlin.fir.backend
|
||||
import org.jetbrains.kotlin.fir.references.FirReference
|
||||
import org.jetbrains.kotlin.ir.declarations.IrClass
|
||||
import org.jetbrains.kotlin.ir.declarations.IrMemberWithContainerSource
|
||||
import org.jetbrains.kotlin.ir.overrides.IrExternalOverridabilityCondition
|
||||
import org.jetbrains.kotlin.ir.util.SymbolTable
|
||||
|
||||
interface Fir2IrExtensions {
|
||||
val irNeedsDeserialization: Boolean
|
||||
val externalOverridabilityConditions: List<IrExternalOverridabilityCondition>
|
||||
|
||||
fun generateOrGetFacadeClass(declaration: IrMemberWithContainerSource, components: Fir2IrComponents): IrClass?
|
||||
fun deserializeToplevelClass(irClass: IrClass, components: Fir2IrComponents): Boolean
|
||||
@@ -22,6 +24,7 @@ interface Fir2IrExtensions {
|
||||
override val irNeedsDeserialization: Boolean
|
||||
get() = false
|
||||
|
||||
override val externalOverridabilityConditions: List<IrExternalOverridabilityCondition> = emptyList()
|
||||
override fun generateOrGetFacadeClass(declaration: IrMemberWithContainerSource, components: Fir2IrComponents): IrClass? = null
|
||||
override fun deserializeToplevelClass(irClass: IrClass, components: Fir2IrComponents): Boolean = false
|
||||
override fun registerDeclarations(symbolTable: SymbolTable) {}
|
||||
|
||||
+6
@@ -14,6 +14,12 @@ import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
|
||||
import org.jetbrains.kotlin.fir.scopes.FirOverrideChecker
|
||||
import org.jetbrains.kotlin.fir.scopes.impl.FirStandardOverrideChecker
|
||||
|
||||
/**
|
||||
* The same code, as in this class also exists in [org.jetbrains.kotlin.ir.objcinterop.ObjCOverridabilityCondition]
|
||||
* and in [org.jetbrains.kotlin.ir.objcinterop.IrObjCOverridabilityCondition].
|
||||
*
|
||||
* When modifying, all three copies should be synchronized.
|
||||
*/
|
||||
class FirNativeOverrideChecker(private val session: FirSession) : FirOverrideChecker {
|
||||
private val standardOverrideChecker = FirStandardOverrideChecker(session)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user