[FIR2IR] Unwrap typealiases during applying of suspend conversion

^KT-65002 Fixed
This commit is contained in:
Dmitriy Novozhilov
2024-02-25 11:09:30 +02:00
committed by Space Team
parent 83ddf904aa
commit 9857bdc891
22 changed files with 131 additions and 1 deletions
@@ -18,6 +18,7 @@ import org.jetbrains.kotlin.fir.render
import org.jetbrains.kotlin.fir.resolve.FirSamResolver
import org.jetbrains.kotlin.fir.resolve.calls.FirFakeArgumentForCallableReference
import org.jetbrains.kotlin.fir.resolve.calls.ResolvedCallArgument
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
import org.jetbrains.kotlin.fir.resolve.substitution.AbstractConeSubstitutor
import org.jetbrains.kotlin.fir.resolve.toFirRegularClassSymbol
import org.jetbrains.kotlin.fir.symbols.ConeTypeParameterLookupTag
@@ -603,7 +604,7 @@ internal class AdapterGenerator(
expectedFunctionalType: ConeClassLikeType,
argument: FirExpression
): IrSimpleFunctionSymbol? {
val argumentType = ((argument as? FirSamConversionExpression)?.expression ?: argument).resolvedType
val argumentType = ((argument as? FirSamConversionExpression)?.expression ?: argument).resolvedType.fullyExpandedType(session)
val argumentTypeWithInvoke = argumentType.findSubtypeOfBasicFunctionType(session, expectedFunctionalType) ?: return null
return if (argumentTypeWithInvoke.isSomeFunctionType(session)) {
@@ -52915,6 +52915,12 @@ public class FirLightTreeBlackBoxCodegenTestGenerated extends AbstractFirLightTr
runTest("compiler/testData/codegen/box/suspendConversion/suspendConversionCompatibility.kt");
}
@Test
@TestMetadata("suspendConversionOfAliasedType.kt")
public void testSuspendConversionOfAliasedType() {
runTest("compiler/testData/codegen/box/suspendConversion/suspendConversionOfAliasedType.kt");
}
@Test
@TestMetadata("suspendConversionOnVarargElements.kt")
public void testSuspendConversionOnVarargElements() {
@@ -52915,6 +52915,12 @@ public class FirLightTreeBlackBoxCodegenWithIrFakeOverrideGeneratorTestGenerated
runTest("compiler/testData/codegen/box/suspendConversion/suspendConversionCompatibility.kt");
}
@Test
@TestMetadata("suspendConversionOfAliasedType.kt")
public void testSuspendConversionOfAliasedType() {
runTest("compiler/testData/codegen/box/suspendConversion/suspendConversionOfAliasedType.kt");
}
@Test
@TestMetadata("suspendConversionOnVarargElements.kt")
public void testSuspendConversionOnVarargElements() {
@@ -52973,6 +52973,12 @@ public class FirPsiBlackBoxCodegenTestGenerated extends AbstractFirPsiBlackBoxCo
runTest("compiler/testData/codegen/box/suspendConversion/suspendConversionCompatibility.kt");
}
@Test
@TestMetadata("suspendConversionOfAliasedType.kt")
public void testSuspendConversionOfAliasedType() {
runTest("compiler/testData/codegen/box/suspendConversion/suspendConversionOfAliasedType.kt");
}
@Test
@TestMetadata("suspendConversionOnVarargElements.kt")
public void testSuspendConversionOnVarargElements() {