IR: handle IrVararg.varargElementType in RemapTypes

This commit is contained in:
Georgy Bronnikov
2020-09-15 19:07:25 +03:00
parent a542bb6af7
commit 377940a6ea
4 changed files with 12 additions and 2 deletions
@@ -148,6 +148,11 @@ class ScopeValidator(
super.visitClassReference(expression)
}
override fun visitVararg(expression: IrVararg) {
visitTypeAccess(expression, expression.varargElementType)
super.visitVararg(expression)
}
override fun visitExpression(expression: IrExpression) {
visitTypeAccess(expression, expression.type)
super.visitExpression(expression)
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
interface IrVarargElement : IrElement
abstract class IrVararg : IrExpression() {
abstract val varargElementType: IrType
abstract var varargElementType: IrType
abstract val elements: List<IrVarargElement>
@@ -27,7 +27,7 @@ class IrVarargImpl(
override val startOffset: Int,
override val endOffset: Int,
override var type: IrType,
override val varargElementType: IrType
override var varargElementType: IrType
) : IrVararg() {
constructor(
startOffset: Int,
@@ -10,6 +10,7 @@ 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.visitors.IrElementVisitorVoid
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
import org.jetbrains.kotlin.ir.visitors.acceptVoid
@@ -83,4 +84,8 @@ private class RemapTypesHelper(private val typeRemapper: TypeRemapper) : IrEleme
super.visitTypeOperator(expression)
}
override fun visitVararg(expression: IrVararg) {
expression.varargElementType = typeRemapper.remapType(expression.varargElementType)
super.visitVararg(expression)
}
}