From 22a5dd7f2949a3bb1465f4196102a1d8f3816086 Mon Sep 17 00:00:00 2001 From: Pavel Mikhailovskii Date: Tue, 6 Jun 2023 15:37:34 +0000 Subject: [PATCH] Fix signatures of suspend functions with big arity --- .../jetbrains/kotlin/fir/backend/jvm/FirJvmTypeMapper.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/FirJvmTypeMapper.kt b/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/FirJvmTypeMapper.kt index 25bc52c2eb3..f7d0ceaceb0 100644 --- a/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/FirJvmTypeMapper.kt +++ b/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/FirJvmTypeMapper.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.backend.jvm import org.jetbrains.kotlin.builtins.StandardNames import org.jetbrains.kotlin.builtins.functions.BuiltInFunctionArity +import org.jetbrains.kotlin.builtins.functions.FunctionTypeKind import org.jetbrains.kotlin.builtins.jvm.JavaToKotlinClassMap import org.jetbrains.kotlin.codegen.signature.JvmSignatureWriter import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper @@ -175,8 +176,9 @@ class FirJvmTypeMapper(val session: FirSession) : FirSessionComponent { val parameters = classifier?.typeParameters.orEmpty().map { it.symbol } val arguments = type.arguments - if ((defaultType.isBasicFunctionType(session) && arguments.size > BuiltInFunctionArity.BIG_ARITY) - || defaultType.isReflectFunctionType(session) + if ((defaultType.functionTypeKind(session).let { it == FunctionTypeKind.Function || it == FunctionTypeKind.SuspendFunction } && + (arguments.size > BuiltInFunctionArity.BIG_ARITY)) || + defaultType.isReflectFunctionType(session) ) { writeGenericArguments(sw, listOf(arguments.last()), listOf(parameters.last()), mode) return