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 { fun createClassReference(classType: KotlinType, startOffset: Int, endOffset: Int): IrClassReference {
val clazz = classType.toClassDescriptor!! val clazz = classType.toClassDescriptor!!
val returnType = val classSymbol = compilerContext.referenceClass(clazz.fqNameSafe) ?: error("Couldn't load class $clazz")
kClassTypeFor(TypeProjectionImpl(Variance.INVARIANT, classType))
return IrClassReferenceImpl( return IrClassReferenceImpl(
startOffset, startOffset,
endOffset, endOffset,
returnType.toIrType(), compilerContext.irBuiltIns.kClassClass.starProjectedType,
compilerContext.referenceClass(clazz.fqNameSafe) ?: error("Couldn't load class $clazz"), classSymbol,
classType.toIrType() classSymbol.starProjectedType
) )
} }