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