From a409976d28d9b101f399c9385519d3e12f777a38 Mon Sep 17 00:00:00 2001 From: Georgy Bronnikov Date: Wed, 9 Sep 2020 21:19:55 +0300 Subject: [PATCH] IR: make IrValueParameter.varargElementType mutable --- .../ir/declarations/impl/IrValueParameterImpl.kt | 2 +- .../persistent/PersistentIrValueParameter.kt | 11 ++++++++++- .../persistent/carriers/ValueParameterCarrier.kt | 4 +++- .../kotlin/ir/declarations/IrValueParameter.kt | 2 +- 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrValueParameterImpl.kt b/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrValueParameterImpl.kt index 2b229a752c6..8a8dd52fbf9 100644 --- a/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrValueParameterImpl.kt +++ b/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrValueParameterImpl.kt @@ -36,7 +36,7 @@ class IrValueParameterImpl( override val name: Name, override val index: Int, override var type: IrType, - override val varargElementType: IrType?, + override var varargElementType: IrType?, override val isCrossinline: Boolean, override val isNoinline: Boolean, override val isHidden: Boolean = false diff --git a/compiler/ir/ir.tree.persistent/src/org/jetbrains/kotlin/ir/declarations/persistent/PersistentIrValueParameter.kt b/compiler/ir/ir.tree.persistent/src/org/jetbrains/kotlin/ir/declarations/persistent/PersistentIrValueParameter.kt index 08d3f914e13..3ba3c37363c 100644 --- a/compiler/ir/ir.tree.persistent/src/org/jetbrains/kotlin/ir/declarations/persistent/PersistentIrValueParameter.kt +++ b/compiler/ir/ir.tree.persistent/src/org/jetbrains/kotlin/ir/declarations/persistent/PersistentIrValueParameter.kt @@ -38,7 +38,7 @@ internal class PersistentIrValueParameter( override val name: Name, override val index: Int, type: IrType, - override val varargElementType: IrType?, + varargElementType: IrType?, override val isCrossinline: Boolean, override val isNoinline: Boolean, override val isHidden: Boolean = false @@ -87,4 +87,13 @@ internal class PersistentIrValueParameter( } } + override var varargElementTypeField: IrType? = varargElementType + + override var varargElementType: IrType? + get() = getCarrier().varargElementTypeField + set(v) { + if (varargElementType !== v) { + setCarrier().varargElementTypeField = v + } + } } diff --git a/compiler/ir/ir.tree.persistent/src/org/jetbrains/kotlin/ir/declarations/persistent/carriers/ValueParameterCarrier.kt b/compiler/ir/ir.tree.persistent/src/org/jetbrains/kotlin/ir/declarations/persistent/carriers/ValueParameterCarrier.kt index aaf1d351651..d1541a6a4f3 100644 --- a/compiler/ir/ir.tree.persistent/src/org/jetbrains/kotlin/ir/declarations/persistent/carriers/ValueParameterCarrier.kt +++ b/compiler/ir/ir.tree.persistent/src/org/jetbrains/kotlin/ir/declarations/persistent/carriers/ValueParameterCarrier.kt @@ -14,10 +14,11 @@ import org.jetbrains.kotlin.ir.types.IrType internal interface ValueParameterCarrier : DeclarationCarrier { var defaultValueField: IrExpressionBody? var typeField: IrType + var varargElementTypeField: IrType? override fun clone(): ValueParameterCarrier { return ValueParameterCarrierImpl( - lastModified, parentField, originField, annotationsField, defaultValueField, typeField + lastModified, parentField, originField, annotationsField, defaultValueField, typeField, varargElementTypeField ) } } @@ -29,4 +30,5 @@ internal class ValueParameterCarrierImpl( override var annotationsField: List, override var defaultValueField: IrExpressionBody?, override var typeField: IrType, + override var varargElementTypeField: IrType?, ) : ValueParameterCarrier diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrValueParameter.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrValueParameter.kt index ea6526ecf63..d94a2a683e2 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrValueParameter.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrValueParameter.kt @@ -29,7 +29,7 @@ abstract class IrValueParameter : IrValueDeclaration(), IrSymbolDeclaration