Add selector to ObjCGetterForKotlinEnumEntry

This helps to drop usages of obsolete "IrDeclaration.descriptor"
from ObjCExportCodeGenerator
This commit is contained in:
Svyatoslav Scherbina
2021-01-28 15:29:50 +03:00
committed by Vasily Levchenko
parent ca2df3cead
commit ccf8b570ca
2 changed files with 8 additions and 6 deletions
@@ -1252,7 +1252,7 @@ private fun ObjCExportCodeGenerator.createTypeAdapter(
classAdapters += createArrayConstructorAdapter(it.irConstructorSymbol.owner)
}
is ObjCGetterForKotlinEnumEntry -> {
classAdapters += createEnumEntryAdapter(it.irEnumEntrySymbol.owner)
classAdapters += createEnumEntryAdapter(it.irEnumEntrySymbol.owner, it.selector)
}
is ObjCClassMethodForKotlinEnumValues -> {
classAdapters += createEnumValuesAdapter(it.valuesFunctionSymbol.owner, it.selector)
@@ -1480,10 +1480,9 @@ private fun ObjCExportCodeGenerator.createObjectInstanceAdapter(
}
private fun ObjCExportCodeGenerator.createEnumEntryAdapter(
irEnumEntry: IrEnumEntry
irEnumEntry: IrEnumEntry,
selector: String
): ObjCExportCodeGenerator.ObjCToKotlinMethodAdapter {
val selector = namer.getEnumEntrySelector(irEnumEntry.descriptor)
return generateObjCToKotlinSyntheticGetter(selector) {
initRuntimeIfNeeded() // For instance methods it gets called when allocating.
@@ -69,7 +69,7 @@ internal fun ObjCExportedInterface.createCodeSpec(symbolTable: SymbolTable): Obj
if (descriptor.kind == ClassKind.ENUM_CLASS) {
descriptor.enumEntries.mapTo(methods) {
ObjCGetterForKotlinEnumEntry(symbolTable.referenceEnumEntry(it))
ObjCGetterForKotlinEnumEntry(symbolTable.referenceEnumEntry(it), namer.getEnumEntrySelector(it))
}
descriptor.getEnumValuesFunctionDescriptor()?.let {
@@ -109,7 +109,10 @@ internal class ObjCFactoryMethodForKotlinArrayConstructor(
val irConstructorSymbol: IrConstructorSymbol
) : ObjCMethodSpec()
internal class ObjCGetterForKotlinEnumEntry(val irEnumEntrySymbol: IrEnumEntrySymbol) : ObjCMethodSpec()
internal class ObjCGetterForKotlinEnumEntry(
val irEnumEntrySymbol: IrEnumEntrySymbol,
val selector: String
) : ObjCMethodSpec()
internal class ObjCClassMethodForKotlinEnumValues(
val valuesFunctionSymbol: IrFunctionSymbol,