IR: make IrLocaldelegatedProperty.type mutable

This commit is contained in:
Georgy Bronnikov
2020-09-03 15:39:42 +03:00
parent 09a906cc9a
commit 78fc690f29
4 changed files with 17 additions and 3 deletions
@@ -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 {
@@ -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<LocalDelegatedPropertyCarrier>,
@@ -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
@@ -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<IrConstructorCall>,
override var typeField: IrType,
override var delegateField: IrVariable?,
override var getterField: IrFunction?,
override var setterField: IrFunction?,
@@ -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