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 startOffset: Int get() = UNDEFINED_OFFSET
|
||||||
override val endOffset: 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) =
|
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D) =
|
||||||
visitor.visitGetValue(this, data)
|
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 startOffset: Int get() = UNDEFINED_OFFSET
|
||||||
override val endOffset: 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)
|
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 symbol: IrValueParameterSymbol,
|
||||||
override val name: Name,
|
override val name: Name,
|
||||||
override val index: Int,
|
override val index: Int,
|
||||||
override val type: IrType,
|
override var type: IrType,
|
||||||
override val varargElementType: IrType?,
|
override val varargElementType: IrType?,
|
||||||
override val isCrossinline: Boolean,
|
override val isCrossinline: Boolean,
|
||||||
override val isNoinline: Boolean,
|
override val isNoinline: Boolean,
|
||||||
|
|||||||
+12
-1
@@ -37,7 +37,7 @@ internal class PersistentIrValueParameter(
|
|||||||
override val symbol: IrValueParameterSymbol,
|
override val symbol: IrValueParameterSymbol,
|
||||||
override val name: Name,
|
override val name: Name,
|
||||||
override val index: Int,
|
override val index: Int,
|
||||||
override val type: IrType,
|
type: IrType,
|
||||||
override val varargElementType: IrType?,
|
override val varargElementType: IrType?,
|
||||||
override val isCrossinline: Boolean,
|
override val isCrossinline: Boolean,
|
||||||
override val isNoinline: Boolean,
|
override val isNoinline: Boolean,
|
||||||
@@ -76,4 +76,15 @@ internal class PersistentIrValueParameter(
|
|||||||
setCarrier().defaultValueField = v
|
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.declarations.IrDeclarationParent
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
|
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
|
||||||
|
import org.jetbrains.kotlin.ir.types.IrType
|
||||||
|
|
||||||
internal interface ValueParameterCarrier : DeclarationCarrier {
|
internal interface ValueParameterCarrier : DeclarationCarrier {
|
||||||
var defaultValueField: IrExpressionBody?
|
var defaultValueField: IrExpressionBody?
|
||||||
|
var typeField: IrType
|
||||||
|
|
||||||
override fun clone(): ValueParameterCarrier {
|
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 parentField: IrDeclarationParent?,
|
||||||
override var originField: IrDeclarationOrigin,
|
override var originField: IrDeclarationOrigin,
|
||||||
override var annotationsField: List<IrConstructorCall>,
|
override var annotationsField: List<IrConstructorCall>,
|
||||||
override var defaultValueField: IrExpressionBody?
|
override var defaultValueField: IrExpressionBody?,
|
||||||
|
override var typeField: IrType,
|
||||||
) : ValueParameterCarrier
|
) : ValueParameterCarrier
|
||||||
|
|||||||
@@ -15,5 +15,5 @@ abstract class IrValueDeclaration : IrDeclarationBase(), IrDeclarationWithName,
|
|||||||
abstract override val descriptor: ValueDescriptor
|
abstract override val descriptor: ValueDescriptor
|
||||||
|
|
||||||
abstract override val symbol: IrValueSymbol
|
abstract override val symbol: IrValueSymbol
|
||||||
abstract val type: IrType
|
abstract var type: IrType
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ class IrVariableImpl(
|
|||||||
override var origin: IrDeclarationOrigin,
|
override var origin: IrDeclarationOrigin,
|
||||||
override val symbol: IrVariableSymbol,
|
override val symbol: IrVariableSymbol,
|
||||||
override val name: Name,
|
override val name: Name,
|
||||||
override val type: IrType,
|
override var type: IrType,
|
||||||
override val isVar: Boolean,
|
override val isVar: Boolean,
|
||||||
override val isConst: Boolean,
|
override val isConst: Boolean,
|
||||||
override val isLateinit: Boolean
|
override val isLateinit: Boolean
|
||||||
|
|||||||
Reference in New Issue
Block a user