Make IrValueDeclaration.type mutable
This commit is contained in:
+5
-1
@@ -542,7 +542,11 @@ class FunctionInlining(
|
||||
override val startOffset: Int get() = UNDEFINED_OFFSET
|
||||
override val endOffset: Int get() = UNDEFINED_OFFSET
|
||||
|
||||
override val type: IrType get() = symbol.owner.type
|
||||
override var type: IrType
|
||||
get() = symbol.owner.type
|
||||
set(value) {
|
||||
symbol.owner.type = value
|
||||
}
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D) =
|
||||
visitor.visitGetValue(this, data)
|
||||
|
||||
+5
-1
@@ -46,7 +46,11 @@ class IrDispatchPoint(val target: SuspendState) : IrExpression() {
|
||||
override val startOffset: Int get() = UNDEFINED_OFFSET
|
||||
override val endOffset: Int get() = UNDEFINED_OFFSET
|
||||
|
||||
override val type: IrType get() = target.entryBlock.type
|
||||
override var type: IrType
|
||||
get() = target.entryBlock.type
|
||||
set(value) {
|
||||
target.entryBlock.type = value
|
||||
}
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D) = visitor.visitExpression(this, data)
|
||||
|
||||
|
||||
+1
-1
@@ -35,7 +35,7 @@ class IrValueParameterImpl(
|
||||
override val symbol: IrValueParameterSymbol,
|
||||
override val name: Name,
|
||||
override val index: Int,
|
||||
override val type: IrType,
|
||||
override var type: IrType,
|
||||
override val varargElementType: IrType?,
|
||||
override val isCrossinline: Boolean,
|
||||
override val isNoinline: Boolean,
|
||||
|
||||
+12
-1
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+7
-2
@@ -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
|
||||
|
||||
@@ -15,5 +15,5 @@ abstract class IrValueDeclaration : IrDeclarationBase(), IrDeclarationWithName,
|
||||
abstract override val descriptor: ValueDescriptor
|
||||
|
||||
abstract override val symbol: IrValueSymbol
|
||||
abstract val type: IrType
|
||||
abstract var type: IrType
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ class IrVariableImpl(
|
||||
override var origin: IrDeclarationOrigin,
|
||||
override val symbol: IrVariableSymbol,
|
||||
override val name: Name,
|
||||
override val type: IrType,
|
||||
override var type: IrType,
|
||||
override val isVar: Boolean,
|
||||
override val isConst: Boolean,
|
||||
override val isLateinit: Boolean
|
||||
|
||||
Reference in New Issue
Block a user