[K2/N] Insert asserts to reveal wrongly recursive Fir2IrLazy*.overriddenSymbols

^KT-58459
[Merge-request: KT-MR-9962
Merged-by: Vladimir Sukharev <Vladimir.Sukharev@jetbrains.com>
This commit is contained in:
Vladimir Sukharev
2023-05-05 12:06:22 +00:00
committed by Space Team
parent 47c32ef37f
commit 98be76295f
5 changed files with 14 additions and 2 deletions
@@ -51,6 +51,7 @@ internal fun FirFunction.getObjCMethodInfoFromOverriddenFunctions(session: FirSe
// call of `processFunctionsByName()` is needed only for necessary side-effect before `getDirectOverriddenFunctions` call
unsubstitutedScope.processFunctionsByName(symbol.name) {}
unsubstitutedScope.getDirectOverriddenFunctions(symbol).firstNotNullOfOrNull {
assert(it.fir != this) { "Function ${symbol.name}() is wrongly contained in its own getDirectOverriddenFunctions" }
it.fir.getObjCMethodInfoFromOverriddenFunctions(session, scopeSession)
}
}
@@ -179,7 +179,10 @@ private fun IrSimpleFunction.getObjCMethodInfo(onlyExternal: Boolean): ObjCMetho
}
}
return overriddenSymbols.firstNotNullOfOrNull { it.owner.getObjCMethodInfo(onlyExternal) }
return overriddenSymbols.firstNotNullOfOrNull {
assert(it.owner != this) { "Function ${it.owner.descriptor.fqNameSafe}() is wrongly contained in its own overriddenSymbols"}
it.owner.getObjCMethodInfo(onlyExternal)
}
}
fun FunctionDescriptor.getExternalObjCMethodInfo(): ObjCMethodInfo? = this.getObjCMethodInfo(onlyExternal = true)