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 var origin: IrDeclarationOrigin,
override val symbol: IrLocalDelegatedPropertySymbol, override val symbol: IrLocalDelegatedPropertySymbol,
override val name: Name, override val name: Name,
override val type: IrType, override var type: IrType,
override val isVar: Boolean override val isVar: Boolean
) : IrLocalDelegatedProperty() { ) : IrLocalDelegatedProperty() {
init { init {
@@ -33,7 +33,7 @@ internal class PersistentIrLocalDelegatedProperty(
origin: IrDeclarationOrigin, origin: IrDeclarationOrigin,
override val symbol: IrLocalDelegatedPropertySymbol, override val symbol: IrLocalDelegatedPropertySymbol,
override val name: Name, override val name: Name,
override val type: IrType, type: IrType,
override val isVar: Boolean override val isVar: Boolean
) : ) :
PersistentIrDeclarationBase<LocalDelegatedPropertyCarrier>, PersistentIrDeclarationBase<LocalDelegatedPropertyCarrier>,
@@ -58,6 +58,16 @@ internal class PersistentIrLocalDelegatedProperty(
override val descriptor: VariableDescriptorWithAccessors override val descriptor: VariableDescriptorWithAccessors
get() = symbol.descriptor 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 delegateField: IrVariable? = null
override var delegate: IrVariable 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.declarations.*
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
import org.jetbrains.kotlin.ir.types.IrType
internal interface LocalDelegatedPropertyCarrier : DeclarationCarrier { internal interface LocalDelegatedPropertyCarrier : DeclarationCarrier {
var typeField: IrType
var delegateField: IrVariable? var delegateField: IrVariable?
var getterField: IrFunction? var getterField: IrFunction?
var setterField: IrFunction? var setterField: IrFunction?
@@ -20,6 +22,7 @@ internal interface LocalDelegatedPropertyCarrier : DeclarationCarrier {
parentField, parentField,
originField, originField,
annotationsField, annotationsField,
typeField,
delegateField, delegateField,
getterField, getterField,
setterField, setterField,
@@ -33,6 +36,7 @@ internal class LocalDelegatedPropertyCarrierImpl(
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 typeField: IrType,
override var delegateField: IrVariable?, override var delegateField: IrVariable?,
override var getterField: IrFunction?, override var getterField: IrFunction?,
override var setterField: IrFunction?, override var setterField: IrFunction?,
@@ -33,7 +33,7 @@ abstract class IrLocalDelegatedProperty :
abstract override val descriptor: VariableDescriptorWithAccessors abstract override val descriptor: VariableDescriptorWithAccessors
abstract override val symbol: IrLocalDelegatedPropertySymbol abstract override val symbol: IrLocalDelegatedPropertySymbol
abstract val type: IrType abstract var type: IrType
abstract val isVar: Boolean abstract val isVar: Boolean
abstract var delegate: IrVariable abstract var delegate: IrVariable