IR: make IrClassReference.classType mutable

This commit is contained in:
Georgy Bronnikov
2020-09-22 15:52:26 +03:00
parent 9d22ef948c
commit 83ee705c0a
3 changed files with 8 additions and 6 deletions
@@ -21,5 +21,5 @@ import org.jetbrains.kotlin.ir.types.IrType
abstract class IrClassReference : IrDeclarationReference() { abstract class IrClassReference : IrDeclarationReference() {
abstract override val symbol: IrClassifierSymbol abstract override val symbol: IrClassifierSymbol
abstract val classType: IrType abstract var classType: IrType
} }
@@ -26,7 +26,7 @@ class IrClassReferenceImpl(
override val endOffset: Int, override val endOffset: Int,
override var type: IrType, override var type: IrType,
override val symbol: IrClassifierSymbol, override val symbol: IrClassifierSymbol,
override val classType: IrType override var classType: IrType
) : IrClassReference() { ) : IrClassReference() {
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R = override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
visitor.visitClassReference(this, data) visitor.visitClassReference(this, data)
@@ -7,10 +7,7 @@ package org.jetbrains.kotlin.ir.util
import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.expressions.IrExpression import org.jetbrains.kotlin.ir.expressions.*
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.visitors.IrElementVisitorVoid import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
import org.jetbrains.kotlin.ir.visitors.acceptVoid 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) expression.varargElementType = typeRemapper.remapType(expression.varargElementType)
super.visitVararg(expression) super.visitVararg(expression)
} }
override fun visitClassReference(expression: IrClassReference) {
expression.classType = typeRemapper.remapType(expression.classType)
super.visitClassReference(expression)
}
} }