[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:
committed by
Space Team
parent
b81c210535
commit
ce2880614b
@@ -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"
|
||||
}
|
||||
+6
@@ -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 {
|
||||
|
||||
+6
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user