Safely check for suspend function parent

The issue here is that the function can be in unlowered file, and
thus its parent package fragment and not class.

 #KT-49317 Fixed
This commit is contained in:
Ilmir Usmanov
2022-04-08 23:31:49 +02:00
parent 3138b29fb2
commit 1e3f84402d
10 changed files with 74 additions and 2 deletions
@@ -38,9 +38,9 @@ private fun IrFunction.isInvokeOfSuspendCallableReference(): Boolean =
&& parentAsClass.origin == JvmLoweredDeclarationOrigin.FUNCTION_REFERENCE_IMPL
private fun IrFunction.isBridgeToSuspendImplMethod(): Boolean =
isSuspend && this is IrSimpleFunction && parentAsClass.functions.any {
isSuspend && this is IrSimpleFunction && (parent as? IrClass)?.functions?.any {
it.name.asString() == name.asString() + SUSPEND_IMPL_NAME_SUFFIX && it.attributeOwnerId == attributeOwnerId
}
} == true
private fun IrFunction.isStaticInlineClassReplacementDelegatingCall(): Boolean {
if (this !is IrAttributeContainer || isStaticInlineClassReplacement) return false