From c0f0c595c37b2feb68a9048a9e0cb4269ed78b1b Mon Sep 17 00:00:00 2001 From: Pavel Kunyavskiy Date: Tue, 19 Dec 2023 00:17:45 +0100 Subject: [PATCH] [IR Actualizer] Don't crash on incorrect code --- .../kotlin/backend/common/actualizer/IrActualizer.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/compiler/ir/ir.actualization/src/main/kotlin/org/jetbrains/kotlin/backend/common/actualizer/IrActualizer.kt b/compiler/ir/ir.actualization/src/main/kotlin/org/jetbrains/kotlin/backend/common/actualizer/IrActualizer.kt index 22c0281c866..ee8bbca3733 100644 --- a/compiler/ir/ir.actualization/src/main/kotlin/org/jetbrains/kotlin/backend/common/actualizer/IrActualizer.kt +++ b/compiler/ir/ir.actualization/src/main/kotlin/org/jetbrains/kotlin/backend/common/actualizer/IrActualizer.kt @@ -55,7 +55,10 @@ class IrActualizer( val classId = symbol.owner.classIdOrFail classActualizationInfo.actualTypeAliases[classId]?.let { return it.owner.expandedType.classOrFail } classActualizationInfo.actualClasses[classId]?.let { return it } - shouldNotBeCalled("There is no actual class for ${classId}, but this should be already rejected by frontend upto this point") + // Can't happen normally, but possible on incorrect code. + // In that case, it would later fail with error in matching inside [actualizeCallablesAndMergeModules] + // Let's leave to expect class as is for that case, it is probably best effort to make errors reasonable. + return symbol } override fun getReferencedClassOrNull(symbol: IrClassSymbol?): IrClassSymbol? {