JVM_IR: bug fix in classFileContainsMethod

The old test sequence failed for toplevel functions because of file
class wrappers, so that the second branch was never invoked.
This commit is contained in:
Georgy Bronnikov
2020-11-30 18:53:31 +03:00
parent f50480d258
commit 4607eca987
11 changed files with 53 additions and 2 deletions
@@ -379,7 +379,7 @@ fun IrSimpleType.isRawType(): Boolean =
hasAnnotation(JvmGeneratorExtensions.RAW_TYPE_ANNOTATION_FQ_NAME)
internal fun classFileContainsMethod(function: IrFunction, context: JvmBackendContext, name: String): Boolean? {
val classId = (function.parent as? IrClass)?.classId ?: (function.containerSource as? JvmPackagePartSource)?.classId ?: return null
val classId = (function.containerSource as? JvmPackagePartSource)?.classId ?: (function.parent as? IrClass)?.classId ?: return null
val originalDescriptor = context.methodSignatureMapper.mapSignatureWithGeneric(function).asmMethod.descriptor
val descriptor = if (function.isSuspend)
listOf(*Type.getArgumentTypes(originalDescriptor), Type.getObjectType("kotlin/coroutines/Continuation"))