[FIR2IR] Run constant evaluation before IR extensions

Test `constValInSerialName` in serialization still fails but because of
  different reason

^KT-54994 Fixed
This commit is contained in:
Dmitriy Novozhilov
2022-12-20 12:04:20 +02:00
committed by Space Team
parent b81c210535
commit ce2880614b
4 changed files with 34 additions and 2 deletions
@@ -98,6 +98,8 @@ class Fir2IrConverter(
}
}
evaluateConstants(irModuleFragment)
if (irGenerationExtensions.isNotEmpty()) {
val pluginContext = Fir2IrPluginContext(components, irModuleFragment.descriptor)
for (extension in irGenerationExtensions) {
@@ -106,8 +108,6 @@ class Fir2IrConverter(
}
irModuleFragment.acceptVoid(ExternalPackageParentPatcher(components, fir2IrExtensions))
evaluateConstants(irModuleFragment)
}
fun bindFakeOverridesOrPostpone(declarations: List<IrDeclaration>) {
@@ -0,0 +1,20 @@
// WITH_STDLIB
// ISSUE: KT-54994
import kotlinx.serialization.*
import kotlinx.serialization.json.*
import kotlinx.serialization.internal.*
const val prefix = "foo"
@Serializable
data class Bar(@SerialName("$prefix.bar") val bar: String)
fun box(): String {
val expectedBar = Bar("hello")
val json = Json.encodeToString(Bar.serializer(), expectedBar)
if (json != """{"foo.bar":"hello"}""") return "Fail: $json"
val actualBar = Json.decodeFromString(Bar.serializer(), json)
if (expectedBar != actualBar) return "Fail: $actualBar"
return "OK"
}
@@ -39,6 +39,12 @@ public class SerializationFirBlackBoxTestGenerated extends AbstractSerialization
runTest("plugins/kotlinx-serialization/testData/boxIr/classSerializerAsObject.kt");
}
@Test
@TestMetadata("constValInSerialName.kt")
public void testConstValInSerialName() throws Exception {
runTest("plugins/kotlinx-serialization/testData/boxIr/constValInSerialName.kt");
}
@Test
@TestMetadata("contextualByDefault.kt")
public void testContextualByDefault() throws Exception {
@@ -37,6 +37,12 @@ public class SerializationIrBoxTestGenerated extends AbstractSerializationIrBoxT
runTest("plugins/kotlinx-serialization/testData/boxIr/classSerializerAsObject.kt");
}
@Test
@TestMetadata("constValInSerialName.kt")
public void testConstValInSerialName() throws Exception {
runTest("plugins/kotlinx-serialization/testData/boxIr/constValInSerialName.kt");
}
@Test
@TestMetadata("contextualByDefault.kt")
public void testContextualByDefault() throws Exception {