Use correct class type when creating class references

(for e.g. PolymorphicSerializer)

Former class reference may had type arguments in it, which lead to bugs
in JS IR.

Fixes https://github.com/Kotlin/kotlinx.serialization/issues/1072
This commit is contained in:
Leonid Startsev
2020-09-25 19:00:10 +03:00
parent d4bdb0eedc
commit bdbf8d7980
@@ -429,14 +429,13 @@ interface IrBuilderExtension {
fun createClassReference(classType: KotlinType, startOffset: Int, endOffset: Int): IrClassReference {
val clazz = classType.toClassDescriptor!!
val returnType =
kClassTypeFor(TypeProjectionImpl(Variance.INVARIANT, classType))
val classSymbol = compilerContext.referenceClass(clazz.fqNameSafe) ?: error("Couldn't load class $clazz")
return IrClassReferenceImpl(
startOffset,
endOffset,
returnType.toIrType(),
compilerContext.referenceClass(clazz.fqNameSafe) ?: error("Couldn't load class $clazz"),
classType.toIrType()
compilerContext.irBuiltIns.kClassClass.starProjectedType,
classSymbol,
classSymbol.starProjectedType
)
}