IR: make IrTypeAlias.expandedType mutable
This commit is contained in:
+1
-1
@@ -20,7 +20,7 @@ class IrTypeAliasImpl(
|
||||
override val symbol: IrTypeAliasSymbol,
|
||||
override val name: Name,
|
||||
override var visibility: DescriptorVisibility,
|
||||
override val expandedType: IrType,
|
||||
override var expandedType: IrType,
|
||||
override val isActual: Boolean,
|
||||
override var origin: IrDeclarationOrigin
|
||||
) : IrTypeAlias() {
|
||||
|
||||
+11
-1
@@ -22,7 +22,7 @@ internal class PersistentIrTypeAlias(
|
||||
override val symbol: IrTypeAliasSymbol,
|
||||
override val name: Name,
|
||||
override var visibility: DescriptorVisibility,
|
||||
override val expandedType: IrType,
|
||||
expandedType: IrType,
|
||||
override val isActual: Boolean,
|
||||
origin: IrDeclarationOrigin
|
||||
) : IrTypeAlias(),
|
||||
@@ -56,4 +56,14 @@ internal class PersistentIrTypeAlias(
|
||||
setCarrier().typeParametersField = v
|
||||
}
|
||||
}
|
||||
|
||||
override var expandedTypeField: IrType = expandedType
|
||||
|
||||
override var expandedType: IrType
|
||||
get() = getCarrier().expandedTypeField
|
||||
set(v) {
|
||||
if (expandedType !== v) {
|
||||
setCarrier().expandedTypeField = v
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+6
-2
@@ -9,9 +9,11 @@ import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent
|
||||
import org.jetbrains.kotlin.ir.declarations.IrTypeParameter
|
||||
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
|
||||
internal interface TypeAliasCarrier : DeclarationCarrier {
|
||||
var typeParametersField: List<IrTypeParameter>
|
||||
var expandedTypeField: IrType
|
||||
|
||||
override fun clone(): TypeAliasCarrier {
|
||||
return TypeAliasCarrierImpl(
|
||||
@@ -19,7 +21,8 @@ internal interface TypeAliasCarrier : DeclarationCarrier {
|
||||
parentField,
|
||||
originField,
|
||||
annotationsField,
|
||||
typeParametersField
|
||||
typeParametersField,
|
||||
expandedTypeField
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -29,5 +32,6 @@ internal class TypeAliasCarrierImpl(
|
||||
override var parentField: IrDeclarationParent?,
|
||||
override var originField: IrDeclarationOrigin,
|
||||
override var annotationsField: List<IrConstructorCall>,
|
||||
override var typeParametersField: List<IrTypeParameter>
|
||||
override var typeParametersField: List<IrTypeParameter>,
|
||||
override var expandedTypeField: IrType,
|
||||
) : TypeAliasCarrier
|
||||
|
||||
@@ -24,7 +24,7 @@ abstract class IrTypeAlias :
|
||||
abstract override val descriptor: TypeAliasDescriptor
|
||||
|
||||
abstract val isActual: Boolean
|
||||
abstract val expandedType: IrType
|
||||
abstract var expandedType: IrType
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitTypeAlias(this, data)
|
||||
|
||||
+1
-1
@@ -43,7 +43,7 @@ class IrLazyTypeAlias(
|
||||
}
|
||||
}
|
||||
|
||||
override val expandedType: IrType by lazy {
|
||||
override var expandedType: IrType by lazyVar {
|
||||
withInitialIr {
|
||||
typeTranslator.buildWithScope(this) {
|
||||
descriptor.expandedType.toIrType()
|
||||
|
||||
Reference in New Issue
Block a user