IR: make IrTypeParameter.superTypes persistent mutable field

This commit is contained in:
Georgy Bronnikov
2020-09-08 09:45:10 +03:00
parent a409976d28
commit df1d9a0113
15 changed files with 32 additions and 20 deletions
@@ -62,5 +62,13 @@ internal class PersistentIrTypeParameter(
override val descriptor: TypeParameterDescriptor
get() = symbol.descriptor
override val superTypes: MutableList<IrType> = SmartList()
override var superTypesField: List<IrType> = emptyList()
override var superTypes: List<IrType>
get() = getCarrier().superTypesField
set(v) {
if (superTypes !== v) {
setCarrier().superTypesField = v
}
}
}
@@ -8,10 +8,13 @@ package org.jetbrains.kotlin.ir.declarations.persistent.carriers
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
import org.jetbrains.kotlin.ir.types.IrType
internal interface TypeParameterCarrier : DeclarationCarrier {
var superTypesField: List<IrType>
override fun clone(): TypeParameterCarrier {
return TypeParameterCarrierImpl(lastModified, parentField, originField, annotationsField)
return TypeParameterCarrierImpl(lastModified, parentField, originField, annotationsField, superTypesField)
}
}
@@ -19,5 +22,6 @@ internal class TypeParameterCarrierImpl(
override val lastModified: Int,
override var parentField: IrDeclarationParent?,
override var originField: IrDeclarationOrigin,
override var annotationsField: List<IrConstructorCall>
override var annotationsField: List<IrConstructorCall>,
override var superTypesField: List<IrType>,
) : TypeParameterCarrier