Handle situation where KSerializer is absent from immediate supertypes

of the class used in @UseSerializers: Use methods to receive
full list of supertypes.

K1 supertypes() call returned all supertypes, while
IrClass.supertypes and FirClassSymbol.resolvedSuperTypes return only immediate ones.

This lead to a difference in behavior between K1 and K2, and regression
after plugin backend was rewritten from descriptors to IR.

#KT-55340 Fixed
This commit is contained in:
Leonid Startsev
2022-12-07 13:57:19 +01:00
committed by Space Team
parent c011f0c374
commit 1c4614e93b
7 changed files with 98 additions and 9 deletions
@@ -208,6 +208,8 @@ object SerializersClassIds {
val sealedSerializerId = ClassId(SerializationPackages.packageFqName, Name.identifier(SpecialBuiltins.sealedSerializer))
val contextSerializerId = ClassId(SerializationPackages.packageFqName, Name.identifier(SpecialBuiltins.contextSerializer))
val generatedSerializerId = ClassId(SerializationPackages.internalPackageFqName, SerialEntityNames.GENERATED_SERIALIZER_CLASS)
val setOfSpecialSerializers = setOf(contextSerializerId, polymorphicSerializerId)
}
fun findStandardKotlinTypeSerializerName(typeName: String?): String? {