IR: make IrExpression.type mutable

This commit is contained in:
Georgy Bronnikov
2020-09-10 15:03:15 +03:00
parent fde7fc6951
commit 1f37795e08
39 changed files with 41 additions and 41 deletions
@@ -27,7 +27,7 @@ abstract class IrExpression : IrElementBase(), IrStatement, IrVarargElement, IrA
@Suppress("LeakingThis") @Suppress("LeakingThis")
override var attributeOwnerId: IrAttributeContainer = this override var attributeOwnerId: IrAttributeContainer = this
abstract val type: IrType abstract var type: IrType
override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrExpression = override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrExpression =
accept(transformer, data) as IrExpression accept(transformer, data) as IrExpression
@@ -31,7 +31,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
class IrBlockImpl( class IrBlockImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val type: IrType, override var type: IrType,
override val origin: IrStatementOrigin? = null, override val origin: IrStatementOrigin? = null,
) : IrBlock() { ) : IrBlock() {
constructor( constructor(
@@ -63,7 +63,7 @@ fun IrBlockImpl.inlineStatement(statement: IrStatement) {
class IrReturnableBlockImpl( class IrReturnableBlockImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val type: IrType, override var type: IrType,
override val symbol: IrReturnableBlockSymbol, override val symbol: IrReturnableBlockSymbol,
override val origin: IrStatementOrigin? = null, override val origin: IrStatementOrigin? = null,
override val inlineFunctionSymbol: IrFunctionSymbol? = null override val inlineFunctionSymbol: IrFunctionSymbol? = null
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
class IrBreakImpl( class IrBreakImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val type: IrType, override var type: IrType,
override var loop: IrLoop, override var loop: IrLoop,
) : IrBreak() { ) : IrBreak() {
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R = override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
@@ -30,7 +30,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
class IrCallImpl( class IrCallImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val type: IrType, override var type: IrType,
override val symbol: IrSimpleFunctionSymbol, override val symbol: IrSimpleFunctionSymbol,
typeArgumentsCount: Int, typeArgumentsCount: Int,
valueArgumentsCount: Int, valueArgumentsCount: Int,
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
class IrClassReferenceImpl( class IrClassReferenceImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val type: IrType, override var type: IrType,
override val symbol: IrClassifierSymbol, override val symbol: IrClassifierSymbol,
override val classType: IrType override val classType: IrType
) : IrClassReference() { ) : IrClassReference() {
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
class IrCompositeImpl( class IrCompositeImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val type: IrType, override var type: IrType,
override val origin: IrStatementOrigin? = null, override val origin: IrStatementOrigin? = null,
) : IrComposite() { ) : IrComposite() {
constructor( constructor(
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
class IrConstImpl<T>( class IrConstImpl<T>(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val type: IrType, override var type: IrType,
override val kind: IrConstKind<T>, override val kind: IrConstKind<T>,
override val value: T override val value: T
) : IrConst<T>() { ) : IrConst<T>() {
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
class IrConstructorCallImpl( class IrConstructorCallImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val type: IrType, override var type: IrType,
override val symbol: IrConstructorSymbol, override val symbol: IrConstructorSymbol,
typeArgumentsCount: Int, typeArgumentsCount: Int,
override val constructorTypeArgumentsCount: Int, override val constructorTypeArgumentsCount: Int,
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
class IrContinueImpl( class IrContinueImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val type: IrType, override var type: IrType,
override var loop: IrLoop, override var loop: IrLoop,
) : IrContinue() { ) : IrContinue() {
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R = override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
@@ -27,7 +27,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
class IrDelegatingConstructorCallImpl( class IrDelegatingConstructorCallImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val type: IrType, override var type: IrType,
override val symbol: IrConstructorSymbol, override val symbol: IrConstructorSymbol,
typeArgumentsCount: Int, typeArgumentsCount: Int,
valueArgumentsCount: Int valueArgumentsCount: Int
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
class IrDoWhileLoopImpl( class IrDoWhileLoopImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val type: IrType, override var type: IrType,
override val origin: IrStatementOrigin?, override val origin: IrStatementOrigin?,
) : IrDoWhileLoop() { ) : IrDoWhileLoop() {
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R { override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
class IrDynamicMemberExpressionImpl( class IrDynamicMemberExpressionImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val type: IrType, override var type: IrType,
override val memberName: String, override val memberName: String,
override var receiver: IrExpression override var receiver: IrExpression
) : IrDynamicMemberExpression() { ) : IrDynamicMemberExpression() {
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.utils.SmartList
class IrDynamicOperatorExpressionImpl( class IrDynamicOperatorExpressionImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val type: IrType, override var type: IrType,
override val operator: IrDynamicOperator override val operator: IrDynamicOperator
) : IrDynamicOperatorExpression() { ) : IrDynamicOperatorExpression() {
override lateinit var receiver: IrExpression override lateinit var receiver: IrExpression
@@ -26,7 +26,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
class IrEnumConstructorCallImpl( class IrEnumConstructorCallImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val type: IrType, override var type: IrType,
override val symbol: IrConstructorSymbol, override val symbol: IrConstructorSymbol,
typeArgumentsCount: Int, typeArgumentsCount: Int,
valueArgumentsCount: Int valueArgumentsCount: Int
@@ -26,7 +26,7 @@ import org.jetbrains.kotlin.utils.SmartList
class IrErrorCallExpressionImpl( class IrErrorCallExpressionImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val type: IrType, override var type: IrType,
override val description: String override val description: String
) : IrErrorCallExpression() { ) : IrErrorCallExpression() {
override var explicitReceiver: IrExpression? = null override var explicitReceiver: IrExpression? = null
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
class IrErrorExpressionImpl( class IrErrorExpressionImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val type: IrType, override var type: IrType,
override val description: String override val description: String
) : IrErrorExpression(), IrExpressionWithCopy { ) : IrErrorExpression(), IrExpressionWithCopy {
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R = override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
class IrFunctionExpressionImpl( class IrFunctionExpressionImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val type: IrType, override var type: IrType,
override var function: IrSimpleFunction, override var function: IrSimpleFunction,
override val origin: IrStatementOrigin override val origin: IrStatementOrigin
) : IrFunctionExpression() { ) : IrFunctionExpression() {
@@ -29,7 +29,7 @@ import org.jetbrains.kotlin.name.Name
class IrFunctionReferenceImpl( class IrFunctionReferenceImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val type: IrType, override var type: IrType,
override val symbol: IrFunctionSymbol, override val symbol: IrFunctionSymbol,
typeArgumentsCount: Int, typeArgumentsCount: Int,
override val valueArgumentsCount: Int, override val valueArgumentsCount: Int,
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
class IrGetClassImpl( class IrGetClassImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val type: IrType, override var type: IrType,
override var argument: IrExpression, override var argument: IrExpression,
) : IrGetClass() { ) : IrGetClass() {
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R { override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
class IrGetEnumValueImpl( class IrGetEnumValueImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val type: IrType, override var type: IrType,
override val symbol: IrEnumEntrySymbol, override val symbol: IrEnumEntrySymbol,
) : IrGetEnumValue() { ) : IrGetEnumValue() {
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R { override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
@@ -29,7 +29,7 @@ class IrGetFieldImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val symbol: IrFieldSymbol, override val symbol: IrFieldSymbol,
override val type: IrType, override var type: IrType,
override val origin: IrStatementOrigin? = null, override val origin: IrStatementOrigin? = null,
override val superQualifierSymbol: IrClassSymbol? = null, override val superQualifierSymbol: IrClassSymbol? = null,
) : IrGetField() { ) : IrGetField() {
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
class IrGetObjectValueImpl( class IrGetObjectValueImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val type: IrType, override var type: IrType,
override val symbol: IrClassSymbol override val symbol: IrClassSymbol
) : IrGetObjectValue() { ) : IrGetObjectValue() {
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R = override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
class IrGetValueImpl( class IrGetValueImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val type: IrType, override var type: IrType,
override val symbol: IrValueSymbol, override val symbol: IrValueSymbol,
override val origin: IrStatementOrigin? = null override val origin: IrStatementOrigin? = null
) : IrGetValue() { ) : IrGetValue() {
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.utils.SmartList
class IrIfThenElseImpl( class IrIfThenElseImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val type: IrType, override var type: IrType,
override val origin: IrStatementOrigin? = null override val origin: IrStatementOrigin? = null
) : IrWhen() { ) : IrWhen() {
override val branches: MutableList<IrBranch> = SmartList() override val branches: MutableList<IrBranch> = SmartList()
@@ -25,7 +25,7 @@ class IrInstanceInitializerCallImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val classSymbol: IrClassSymbol, override val classSymbol: IrClassSymbol,
override val type: IrType, override var type: IrType,
) : IrInstanceInitializerCall() { ) : IrInstanceInitializerCall() {
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R { override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
return visitor.visitInstanceInitializerCall(this, data) return visitor.visitInstanceInitializerCall(this, data)
@@ -29,7 +29,7 @@ import org.jetbrains.kotlin.name.Name
class IrLocalDelegatedPropertyReferenceImpl( class IrLocalDelegatedPropertyReferenceImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val type: IrType, override var type: IrType,
override val symbol: IrLocalDelegatedPropertySymbol, override val symbol: IrLocalDelegatedPropertySymbol,
override val delegate: IrVariableSymbol, override val delegate: IrVariableSymbol,
override val getter: IrSimpleFunctionSymbol, override val getter: IrSimpleFunctionSymbol,
@@ -29,7 +29,7 @@ import org.jetbrains.kotlin.name.Name
class IrPropertyReferenceImpl( class IrPropertyReferenceImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val type: IrType, override var type: IrType,
override val symbol: IrPropertySymbol, override val symbol: IrPropertySymbol,
typeArgumentsCount: Int, typeArgumentsCount: Int,
override val field: IrFieldSymbol?, override val field: IrFieldSymbol?,
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
class IrRawFunctionReferenceImpl( class IrRawFunctionReferenceImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val type: IrType, override var type: IrType,
override val symbol: IrFunctionSymbol, override val symbol: IrFunctionSymbol,
) : IrRawFunctionReference() { ) : IrRawFunctionReference() {
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R { override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
@@ -26,7 +26,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
class IrReturnImpl( class IrReturnImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val type: IrType, override var type: IrType,
override val returnTargetSymbol: IrReturnTargetSymbol, override val returnTargetSymbol: IrReturnTargetSymbol,
override var value: IrExpression override var value: IrExpression
) : IrReturn() { ) : IrReturn() {
@@ -29,7 +29,7 @@ class IrSetFieldImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val symbol: IrFieldSymbol, override val symbol: IrFieldSymbol,
override val type: IrType, override var type: IrType,
override val origin: IrStatementOrigin? = null, override val origin: IrStatementOrigin? = null,
override val superQualifierSymbol: IrClassSymbol? = null, override val superQualifierSymbol: IrClassSymbol? = null,
) : IrSetField() { ) : IrSetField() {
@@ -27,7 +27,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
class IrSetVariableImpl( class IrSetVariableImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val type: IrType, override var type: IrType,
override val symbol: IrVariableSymbol, override val symbol: IrVariableSymbol,
override var value: IrExpression, override var value: IrExpression,
override val origin: IrStatementOrigin? override val origin: IrStatementOrigin?
@@ -26,7 +26,7 @@ import java.util.*
class IrStringConcatenationImpl( class IrStringConcatenationImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val type: IrType override var type: IrType
) : IrStringConcatenation() { ) : IrStringConcatenation() {
constructor( constructor(
startOffset: Int, startOffset: Int,
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
class IrSuspensionPointImpl( class IrSuspensionPointImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val type: IrType, override var type: IrType,
override var suspensionPointIdParameter: IrVariable, override var suspensionPointIdParameter: IrVariable,
override var result: IrExpression, override var result: IrExpression,
override var resumeResult: IrExpression override var resumeResult: IrExpression
@@ -40,7 +40,7 @@ class IrSuspensionPointImpl(
class IrSuspendableExpressionImpl( class IrSuspendableExpressionImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val type: IrType, override var type: IrType,
override var suspensionPointId: IrExpression, override var suspensionPointId: IrExpression,
override var result: IrExpression override var result: IrExpression
) : IrSuspendableExpression() { ) : IrSuspendableExpression() {
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
class IrThrowImpl( class IrThrowImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val type: IrType, override var type: IrType,
override var value: IrExpression, override var value: IrExpression,
) : IrThrow() { ) : IrThrow() {
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R = override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
@@ -28,7 +28,7 @@ import org.jetbrains.kotlin.utils.SmartList
class IrTryImpl( class IrTryImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val type: IrType, override var type: IrType,
) : IrTry() { ) : IrTry() {
constructor( constructor(
startOffset: Int, startOffset: Int,
@@ -28,7 +28,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
class IrTypeOperatorCallImpl( class IrTypeOperatorCallImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val type: IrType, override var type: IrType,
override val operator: IrTypeOperator, override val operator: IrTypeOperator,
override val typeOperand: IrType, override val typeOperand: IrType,
override var argument: IrExpression, override var argument: IrExpression,
@@ -26,7 +26,7 @@ import org.jetbrains.kotlin.utils.SmartList
class IrVarargImpl( class IrVarargImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val type: IrType, override var type: IrType,
override val varargElementType: IrType override val varargElementType: IrType
) : IrVararg() { ) : IrVararg() {
constructor( constructor(
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
class IrWhenImpl( class IrWhenImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val type: IrType, override var type: IrType,
override val origin: IrStatementOrigin? = null override val origin: IrStatementOrigin? = null
) : IrWhen() { ) : IrWhen() {
constructor( constructor(
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
class IrWhileLoopImpl( class IrWhileLoopImpl(
override val startOffset: Int, override val startOffset: Int,
override val endOffset: Int, override val endOffset: Int,
override val type: IrType, override var type: IrType,
override val origin: IrStatementOrigin?, override val origin: IrStatementOrigin?,
) : IrWhileLoop() { ) : IrWhileLoop() {
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R { override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {