K2: Fix type-alias expansion during suspend function type serialization

When suspend function type is serialized, there is special logic that
adds Continuation parameter, before doing so, type-aliases has to be
expanded, attributes for resulting type should also derive from
expanded type

KT-53193, KT-54062
This commit is contained in:
Simon Ogorodnik
2022-08-31 15:07:26 +02:00
committed by Space
parent 3f406044a6
commit 8bdb8ba232
10 changed files with 57 additions and 1 deletions
@@ -1000,6 +1000,11 @@ public class FirLoadCompiledKotlinGenerated extends AbstractFirLoadCompiledKotli
public void testBasic() throws Exception {
runTest("compiler/testData/loadJava/compiledKotlin/coroutines/Basic.kt");
}
@TestMetadata("TypeAliasFTSuspendWithReceiver.kt")
public void testTypeAliasFTSuspendWithReceiver() throws Exception {
runTest("compiler/testData/loadJava/compiledKotlin/coroutines/TypeAliasFTSuspendWithReceiver.kt");
}
}
@TestMetadata("compiler/testData/loadJava/compiledKotlin/dataClass")
@@ -0,0 +1,9 @@
public final fun foo(f: R|suspend test/Context.() -> kotlin/Unit|): R|kotlin/Unit|
public final class Context : R|kotlin/Any| {
public constructor(): R|test/Context|
}
public final typealias SuspendWithContext = R|suspend test/Context.() -> kotlin/Unit|
@@ -123,7 +123,7 @@ fun ConeKotlinType.suspendFunctionTypeToFunctionTypeWithContinuation(session: Fi
isNullable = false
) + lastTypeArgument).toTypedArray(),
isNullable = false,
attributes = attributes
attributes = fullyExpandedType.attributes
)
}