From b10d330cfd0067e6a7606f846160c7478a40f113 Mon Sep 17 00:00:00 2001 From: Ivan Kylchik Date: Tue, 15 Aug 2023 14:56:17 +0200 Subject: [PATCH] [Native] Drop `getContainingFile` from `IrUtils2` We can reuse `fileOrNull` function from common `IrUtils` --- .../backend/konan/descriptors/ClassLayoutBuilder.kt | 2 +- .../konan/llvm/objcexport/ObjCExportCodeGenerator.kt | 4 ++-- .../kotlin/backend/konan/optimizations/DataFlowIR.kt | 4 ++-- .../src/org/jetbrains/kotlin/ir/util/IrUtils2.kt | 10 ---------- 4 files changed, 5 insertions(+), 15 deletions(-) diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/descriptors/ClassLayoutBuilder.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/descriptors/ClassLayoutBuilder.kt index 070d3643119..bdaccf6648c 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/descriptors/ClassLayoutBuilder.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/descriptors/ClassLayoutBuilder.kt @@ -467,7 +467,7 @@ internal class ClassLayoutBuilder(val irClass: IrClass, val context: Context) { val result = mutableMapOf() irClass.annotations.forEach { - val irFile = irClass.getContainingFile() + val irFile = irClass.fileOrNull val annotationClass = (it.symbol.owner as? IrConstructor)?.constructedClass ?: error(irFile, it, "unexpected annotation") diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/objcexport/ObjCExportCodeGenerator.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/objcexport/ObjCExportCodeGenerator.kt index 80867ee1f61..de7630ecfb8 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/objcexport/ObjCExportCodeGenerator.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/objcexport/ObjCExportCodeGenerator.kt @@ -1142,11 +1142,11 @@ private fun ObjCExportCodeGenerator.effectiveThrowsClasses(method: IrFunction, s val throwsVararg = throwsAnnotation.getValueArgument(0) ?: return emptyList() - if (throwsVararg !is IrVararg) error(method.getContainingFile(), throwsVararg, "unexpected vararg") + if (throwsVararg !is IrVararg) error(method.fileOrNull, throwsVararg, "unexpected vararg") return throwsVararg.elements.map { (it as? IrClassReference)?.symbol?.owner as? IrClass - ?: error(method.getContainingFile(), it, "unexpected @Throws argument") + ?: error(method.fileOrNull, it, "unexpected @Throws argument") } } diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/DataFlowIR.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/DataFlowIR.kt index 9b3319a09dd..b83ef3cac83 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/DataFlowIR.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/DataFlowIR.kt @@ -509,7 +509,7 @@ internal object DataFlowIR { type.vtable += layoutBuilder.vtableEntries.map { val implementation = it.getImplementation(context) ?: error( - irClass.getContainingFile(), + irClass.fileOrNull, irClass, """ no implementation found for ${it.overriddenFunction.render()} @@ -524,7 +524,7 @@ internal object DataFlowIR { type.itable[iface.classId] = iface.interfaceVTableEntries.map { val implementation = layoutBuilder.overridingOf(it) ?: error( - irClass.getContainingFile(), + irClass.fileOrNull, irClass, """ no implementation found for ${it.render()} diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/ir/util/IrUtils2.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/ir/util/IrUtils2.kt index 9ea459f8c9a..6647dbffd94 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/ir/util/IrUtils2.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/ir/util/IrUtils2.kt @@ -97,16 +97,6 @@ inline fun stub(name: String): T { } as T } -tailrec fun IrDeclaration.getContainingFile(): IrFile? { - val parent = this.parent - - return when (parent) { - is IrFile -> parent - is IrDeclaration -> parent.getContainingFile() - else -> null - } -} - fun IrFunctionAccessExpression.addArguments(args: Map) { val unhandledParameters = args.keys.toMutableSet() fun getArg(parameter: IrValueParameter) = args[parameter]?.also { unhandledParameters -= parameter }