Do not try to create view of suspend function descriptor on IR BE

Keep container source in wrapped descriptor
This commit is contained in:
Ilmir Usmanov
2019-06-14 21:34:19 +03:00
parent 53878b6961
commit c613e04962
10 changed files with 34 additions and 122 deletions
@@ -391,7 +391,7 @@ fun createMethodNodeForSuspendCoroutineUninterceptedOrReturn(
typeMapper: KotlinTypeMapper,
languageVersionSettings: LanguageVersionSettings
): MethodNode {
assert(functionDescriptor.isBuiltInSuspendCoroutineUninterceptedOrReturnInJvm(languageVersionSettings)) {
assert(functionDescriptor.isBuiltInSuspendCoroutineUninterceptedOrReturn(languageVersionSettings)) {
"functionDescriptor must be kotlin.coroutines.intrinsics.suspendCoroutineUninterceptedOrReturn"
}
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.codegen.inline
import org.jetbrains.kotlin.backend.common.isBuiltInIntercepted
import org.jetbrains.kotlin.backend.common.isBuiltInSuspendCoroutineUninterceptedOrReturn
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.codegen.AsmUtil
import org.jetbrains.kotlin.codegen.ExpressionCodegen
@@ -48,7 +49,7 @@ internal fun generateInlineIntrinsic(
createMethodNodeForIntercepted(descriptor, typeMapper, languageVersionSettings)
descriptor.isBuiltInCoroutineContext(languageVersionSettings) ->
createMethodNodeForCoroutineContext(descriptor, languageVersionSettings)
descriptor.isBuiltInSuspendCoroutineUninterceptedOrReturnInJvm(languageVersionSettings) ->
descriptor.isBuiltInSuspendCoroutineUninterceptedOrReturn(languageVersionSettings) ->
createMethodNodeForSuspendCoroutineUninterceptedOrReturn(descriptor, typeMapper, languageVersionSettings)
descriptor.isBuiltinAlwaysEnabledAssert() ->
createMethodNodeForAlwaysEnabledAssert(descriptor, typeMapper)
@@ -172,7 +172,7 @@ class KotlinTypeMapper @JvmOverloads constructor(
return Type.VOID_TYPE
}
if (descriptor.isSuspendFunctionNotSuspensionView()) {
if (descriptor.isSuspendFunctionNotSuspensionView() && !isIrBackend) {
return mapReturnType(
getOrCreateJvmSuspendFunctionView(descriptor as SimpleFunctionDescriptor, isReleaseCoroutines),
sw
@@ -733,7 +733,7 @@ class KotlinTypeMapper @JvmOverloads constructor(
return mapSignature(f.callableFromObject, kind, skipGenericSignature)
}
if (f.isSuspendFunctionNotSuspensionView()) {
if (f.isSuspendFunctionNotSuspensionView() && !isIrBackend) {
return mapSignature(
getOrCreateJvmSuspendFunctionView(f, isReleaseCoroutines), kind,
skipGenericSignature
@@ -1315,10 +1315,6 @@ class KotlinTypeMapper @JvmOverloads constructor(
return descriptor.containingDeclaration.name.asString()
}
if (descriptor.containingDeclaration.fqNameSafe.asString() == "kotlin.coroutines.intrinsics") {
return "kotlin.coroutines.IntrinsicsKt" // TODO: why this change is needed in JVM_IR?
}
if (directMember is FictitiousArrayConstructor) {
return "kotlin.Array"
}