[K/N] Fix K2 ObjC interop: Fields are not supported for Companion of subclass of ObjC type

^KT-63048
This commit is contained in:
Vladimir Sukharev
2023-11-03 20:07:17 +01:00
committed by Space Team
parent 3ea4a6a937
commit 4d4ad6c0d8
6 changed files with 34 additions and 6 deletions
@@ -22,8 +22,12 @@ import org.jetbrains.kotlin.constant.EvaluatedConstTracker
import org.jetbrains.kotlin.descriptors.isEmpty
import org.jetbrains.kotlin.descriptors.konan.isNativeStdlib
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.backend.*
import org.jetbrains.kotlin.fir.backend.native.FirNativeKotlinMangler
import org.jetbrains.kotlin.fir.backend.native.interop.isExternalObjCClassProperty
import org.jetbrains.kotlin.fir.declarations.FirProperty
import org.jetbrains.kotlin.fir.declarations.utils.isLateInit
import org.jetbrains.kotlin.fir.descriptors.FirModuleDescriptor
import org.jetbrains.kotlin.fir.pipeline.convertToIrAndActualize
import org.jetbrains.kotlin.fir.references.FirReference
@@ -51,6 +55,11 @@ internal object NativeFir2IrExtensions : Fir2IrExtensions {
override fun deserializeToplevelClass(irClass: IrClass, components: Fir2IrComponents) = false
override fun registerDeclarations(symbolTable: SymbolTable) {}
override fun findInjectedValue(calleeReference: FirReference, conversionScope: Fir2IrConversionScope) = null
override fun hasBackingField(property: FirProperty, session: FirSession): Boolean =
if (property.isExternalObjCClassProperty(session))
property.isLateInit
else
Fir2IrExtensions.Default.hasBackingField(property, session)
}
internal fun PhaseContext.fir2Ir(