diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt index 8db46574fd6..a5153637431 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt @@ -448,19 +448,27 @@ open class FirExpressionsResolveTransformer(transformer: FirBodyResolveTransform private fun FirTypeRef.withTypeArgumentsForBareType(argument: FirExpression): FirTypeRef { // TODO: Everything should also work for case of checked-type itself is a type alias + val type = coneTypeSafe() + if (type !is ConeClassLikeType || type.typeArguments.isNotEmpty()) { + return this + } val baseTypeArguments = argument.typeRef.coneTypeSafe()?.fullyExpandedType(session)?.typeArguments - val type = coneTypeSafe() - return if ( - type?.typeArguments?.isEmpty() != true || - type is ConeTypeParameterType || - baseTypeArguments?.isEmpty() != false || - (type is ConeClassLikeType && - (type.lookupTag.toSymbol(session)?.fir as? FirTypeParameterRefsOwner)?.typeParameters?.isEmpty() == true) - ) { + + return if (baseTypeArguments?.isEmpty() != false) { this } else { - withReplacedConeType(type.withArguments(baseTypeArguments)) + val typeParameters = (type.lookupTag.toSymbol(session)?.fir as? FirTypeParameterRefsOwner)?.typeParameters.orEmpty() + if (typeParameters.isEmpty()) { + this + } else { + withReplacedConeType( + type.withArguments( + if (baseTypeArguments.size > typeParameters.size) baseTypeArguments.take(typeParameters.size).toTypedArray() + else baseTypeArguments + ) + ) + } } } diff --git a/compiler/testData/diagnostics/testsWithStdLib/coroutines/suspendFunctionN.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/coroutines/suspendFunctionN.fir.kt index e6cbea1e0f2..71e52932b83 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/coroutines/suspendFunctionN.fir.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/coroutines/suspendFunctionN.fir.kt @@ -3,6 +3,6 @@ // SKIP_TXT fun test() { - suspend {} is SuspendFunction0<*> + suspend {} is SuspendFunction0<*> suspend {} is kotlin.coroutines.SuspendFunction0<*> }