[FIR][Serialization] Set containingClassForStaticMemberAttr in generateConstructors

This commit is contained in:
Ivan Kochurkin
2022-11-30 18:27:55 +01:00
committed by Space Team
parent 8936220876
commit 31e2f0ba95
4 changed files with 43 additions and 0 deletions
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.analysis.checkers.getContainingDeclarationSymbol
import org.jetbrains.kotlin.fir.containingClassForStaticMemberAttr
import org.jetbrains.kotlin.fir.copy
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
import org.jetbrains.kotlin.fir.declarations.builder.*
@@ -237,6 +238,8 @@ class SerializationFirResolveExtension(session: FirSession) : FirDeclarationGene
type = kSerializerId.constructClassLikeType(arrayOf(typeParam.toConeType()), false)
)
}
}.also {
it.containingClassForStaticMemberAttr = ConeClassLikeLookupTagImpl(owner.classId)
}.symbol
}
return result
+28
View File
@@ -0,0 +1,28 @@
// IGNORE_BACKEND_K1: JVM_IR
// TARGET_BACKEND: JVM_IR
// !LANGUAGE: +MultiPlatformProjects
// WITH_STDLIB
// MODULE: common
// TARGET_PLATFORM: Common
// FILE: common.kt
import kotlinx.serialization.*
@Serializable
class Bar<T>(val t: T)
@Serializable
class Wrapper(val b: Bar<String>)
// MODULE: jvm()()(common)
// TARGET_PLATFORM: JVM
// FILE: main.kt
import kotlinx.serialization.*
import kotlinx.serialization.json.*
import kotlinx.serialization.descriptors.*
fun box(): String {
return if (Wrapper.serializer().descriptor.elementDescriptors.first().toString() == "Bar(t: kotlin.String)") "OK" else "FAIL"
}
@@ -117,6 +117,12 @@ public class SerializationFirBlackBoxTestGenerated extends AbstractSerialization
runTest("plugins/kotlinx-serialization/testData/boxIr/metaSerializable.kt");
}
@Test
@TestMetadata("mpp.kt")
public void testMpp() throws Exception {
runTest("plugins/kotlinx-serialization/testData/boxIr/mpp.kt");
}
@Test
@TestMetadata("multiFieldValueClasses.kt")
public void testMultiFieldValueClasses() throws Exception {
@@ -115,6 +115,12 @@ public class SerializationIrBoxTestGenerated extends AbstractSerializationIrBoxT
runTest("plugins/kotlinx-serialization/testData/boxIr/metaSerializable.kt");
}
@Test
@TestMetadata("mpp.kt")
public void testMpp() throws Exception {
runTest("plugins/kotlinx-serialization/testData/boxIr/mpp.kt");
}
@Test
@TestMetadata("multiFieldValueClasses.kt")
public void testMultiFieldValueClasses() throws Exception {