Make IrValueDeclaration.type mutable

This commit is contained in:
Georgy Bronnikov
2020-09-10 15:15:53 +03:00
parent 1f37795e08
commit 5065b1a4c6
7 changed files with 32 additions and 8 deletions
@@ -37,7 +37,7 @@ internal class PersistentIrValueParameter(
override val symbol: IrValueParameterSymbol,
override val name: Name,
override val index: Int,
override val type: IrType,
type: IrType,
override val varargElementType: IrType?,
override val isCrossinline: Boolean,
override val isNoinline: Boolean,
@@ -76,4 +76,15 @@ internal class PersistentIrValueParameter(
setCarrier().defaultValueField = v
}
}
override var typeField: IrType = type
override var type: IrType
get() = getCarrier().typeField
set(v) {
if (type !== v) {
setCarrier().typeField = v
}
}
}
@@ -9,12 +9,16 @@ import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
import org.jetbrains.kotlin.ir.types.IrType
internal interface ValueParameterCarrier : DeclarationCarrier {
var defaultValueField: IrExpressionBody?
var typeField: IrType
override fun clone(): ValueParameterCarrier {
return ValueParameterCarrierImpl(lastModified, parentField, originField, annotationsField, defaultValueField)
return ValueParameterCarrierImpl(
lastModified, parentField, originField, annotationsField, defaultValueField, typeField
)
}
}
@@ -23,5 +27,6 @@ internal class ValueParameterCarrierImpl(
override var parentField: IrDeclarationParent?,
override var originField: IrDeclarationOrigin,
override var annotationsField: List<IrConstructorCall>,
override var defaultValueField: IrExpressionBody?
override var defaultValueField: IrExpressionBody?,
override var typeField: IrType,
) : ValueParameterCarrier