Support situation when argument for serializer<T>() function has SerialInfo annotations.

Because SerializationJvmIrIntrinsicSupport does not instantiate annotations yet,
this info could be lost. As a workaround, it is possible to call Companion.serializer()
functions instead of direct serializer instantiation, as they are plugin-generated
and correctly handle annotations.

Note that for some cases (enums & interfaces) this WA is not enough, so additional work
is needed later.

Fixes https://github.com/Kotlin/kotlinx.serialization/issues/2179
This commit is contained in:
Leonid Startsev
2023-02-03 15:19:28 +01:00
committed by Space Team
parent 363330f904
commit e0dce31cde
6 changed files with 73 additions and 13 deletions
@@ -111,6 +111,12 @@ public class SerializationFirBlackBoxTestGenerated extends AbstractSerialization
runTest("plugins/kotlinx-serialization/testData/boxIr/inlineClasses.kt");
}
@Test
@TestMetadata("intrinsicAnnotations.kt")
public void testIntrinsicAnnotations() throws Exception {
runTest("plugins/kotlinx-serialization/testData/boxIr/intrinsicAnnotations.kt");
}
@Test
@TestMetadata("intrinsicsBox.kt")
public void testIntrinsicsBox() throws Exception {
@@ -109,6 +109,12 @@ public class SerializationIrBoxTestGenerated extends AbstractSerializationIrBoxT
runTest("plugins/kotlinx-serialization/testData/boxIr/inlineClasses.kt");
}
@Test
@TestMetadata("intrinsicAnnotations.kt")
public void testIntrinsicAnnotations() throws Exception {
runTest("plugins/kotlinx-serialization/testData/boxIr/intrinsicAnnotations.kt");
}
@Test
@TestMetadata("intrinsicsBox.kt")
public void testIntrinsicsBox() throws Exception {