From 83ee705c0aee0e52ee28667d5981f915537c6dcc Mon Sep 17 00:00:00 2001 From: Georgy Bronnikov Date: Tue, 22 Sep 2020 15:52:26 +0300 Subject: [PATCH] IR: make IrClassReference.classType mutable --- .../kotlin/ir/expressions/IrClassReference.kt | 2 +- .../kotlin/ir/expressions/impl/IrClassReferenceImpl.kt | 2 +- .../src/org/jetbrains/kotlin/ir/util/RemapTypes.kt | 10 ++++++---- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrClassReference.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrClassReference.kt index 671733b9cca..1f76d057ece 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrClassReference.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrClassReference.kt @@ -21,5 +21,5 @@ import org.jetbrains.kotlin.ir.types.IrType abstract class IrClassReference : IrDeclarationReference() { abstract override val symbol: IrClassifierSymbol - abstract val classType: IrType + abstract var classType: IrType } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrClassReferenceImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrClassReferenceImpl.kt index c93fb41d092..19c113dda82 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrClassReferenceImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrClassReferenceImpl.kt @@ -26,7 +26,7 @@ class IrClassReferenceImpl( override val endOffset: Int, override var type: IrType, override val symbol: IrClassifierSymbol, - override val classType: IrType + override var classType: IrType ) : IrClassReference() { override fun accept(visitor: IrElementVisitor, data: D): R = visitor.visitClassReference(this, data) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/RemapTypes.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/RemapTypes.kt index 68eb84a53a1..3294b394385 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/RemapTypes.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/RemapTypes.kt @@ -7,10 +7,7 @@ package org.jetbrains.kotlin.ir.util import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.declarations.* -import org.jetbrains.kotlin.ir.expressions.IrExpression -import org.jetbrains.kotlin.ir.expressions.IrMemberAccessExpression -import org.jetbrains.kotlin.ir.expressions.IrTypeOperatorCall -import org.jetbrains.kotlin.ir.expressions.IrVararg +import org.jetbrains.kotlin.ir.expressions.* import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid import org.jetbrains.kotlin.ir.visitors.acceptVoid @@ -88,4 +85,9 @@ private class RemapTypesHelper(private val typeRemapper: TypeRemapper) : IrEleme expression.varargElementType = typeRemapper.remapType(expression.varargElementType) super.visitVararg(expression) } + + override fun visitClassReference(expression: IrClassReference) { + expression.classType = typeRemapper.remapType(expression.classType) + super.visitClassReference(expression) + } } \ No newline at end of file