diff --git a/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrLocalDelegatedPropertyImpl.kt b/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrLocalDelegatedPropertyImpl.kt index 6fd07670734..dd648146127 100644 --- a/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrLocalDelegatedPropertyImpl.kt +++ b/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrLocalDelegatedPropertyImpl.kt @@ -30,7 +30,7 @@ class IrLocalDelegatedPropertyImpl( override var origin: IrDeclarationOrigin, override val symbol: IrLocalDelegatedPropertySymbol, override val name: Name, - override val type: IrType, + override var type: IrType, override val isVar: Boolean ) : IrLocalDelegatedProperty() { init { diff --git a/compiler/ir/ir.tree.persistent/src/org/jetbrains/kotlin/ir/declarations/persistent/PersistentIrLocalDelegatedProperty.kt b/compiler/ir/ir.tree.persistent/src/org/jetbrains/kotlin/ir/declarations/persistent/PersistentIrLocalDelegatedProperty.kt index 3d0e54132eb..ce438dc803c 100644 --- a/compiler/ir/ir.tree.persistent/src/org/jetbrains/kotlin/ir/declarations/persistent/PersistentIrLocalDelegatedProperty.kt +++ b/compiler/ir/ir.tree.persistent/src/org/jetbrains/kotlin/ir/declarations/persistent/PersistentIrLocalDelegatedProperty.kt @@ -33,7 +33,7 @@ internal class PersistentIrLocalDelegatedProperty( origin: IrDeclarationOrigin, override val symbol: IrLocalDelegatedPropertySymbol, override val name: Name, - override val type: IrType, + type: IrType, override val isVar: Boolean ) : PersistentIrDeclarationBase, @@ -58,6 +58,16 @@ internal class PersistentIrLocalDelegatedProperty( override val descriptor: VariableDescriptorWithAccessors get() = symbol.descriptor + override var typeField: IrType = type + + override var type: IrType + get() = getCarrier().typeField + set(v) { + if (getCarrier().typeField !== v) { + setCarrier().typeField = v + } + } + override var delegateField: IrVariable? = null override var delegate: IrVariable diff --git a/compiler/ir/ir.tree.persistent/src/org/jetbrains/kotlin/ir/declarations/persistent/carriers/LocalDelegatedPropertyCarrier.kt b/compiler/ir/ir.tree.persistent/src/org/jetbrains/kotlin/ir/declarations/persistent/carriers/LocalDelegatedPropertyCarrier.kt index 708f4dbb2b5..3b297d33827 100644 --- a/compiler/ir/ir.tree.persistent/src/org/jetbrains/kotlin/ir/declarations/persistent/carriers/LocalDelegatedPropertyCarrier.kt +++ b/compiler/ir/ir.tree.persistent/src/org/jetbrains/kotlin/ir/declarations/persistent/carriers/LocalDelegatedPropertyCarrier.kt @@ -7,8 +7,10 @@ package org.jetbrains.kotlin.ir.declarations.persistent.carriers import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.expressions.IrConstructorCall +import org.jetbrains.kotlin.ir.types.IrType internal interface LocalDelegatedPropertyCarrier : DeclarationCarrier { + var typeField: IrType var delegateField: IrVariable? var getterField: IrFunction? var setterField: IrFunction? @@ -20,6 +22,7 @@ internal interface LocalDelegatedPropertyCarrier : DeclarationCarrier { parentField, originField, annotationsField, + typeField, delegateField, getterField, setterField, @@ -33,6 +36,7 @@ internal class LocalDelegatedPropertyCarrierImpl( override var parentField: IrDeclarationParent?, override var originField: IrDeclarationOrigin, override var annotationsField: List, + override var typeField: IrType, override var delegateField: IrVariable?, override var getterField: IrFunction?, override var setterField: IrFunction?, diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrLocalDelegatedProperty.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrLocalDelegatedProperty.kt index da6ba4418dd..178e6f39ecc 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrLocalDelegatedProperty.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrLocalDelegatedProperty.kt @@ -33,7 +33,7 @@ abstract class IrLocalDelegatedProperty : abstract override val descriptor: VariableDescriptorWithAccessors abstract override val symbol: IrLocalDelegatedPropertySymbol - abstract val type: IrType + abstract var type: IrType abstract val isVar: Boolean abstract var delegate: IrVariable