IR: handle IrVararg.varargElementType in RemapTypes
This commit is contained in:
@@ -148,6 +148,11 @@ class ScopeValidator(
|
|||||||
super.visitClassReference(expression)
|
super.visitClassReference(expression)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun visitVararg(expression: IrVararg) {
|
||||||
|
visitTypeAccess(expression, expression.varargElementType)
|
||||||
|
super.visitVararg(expression)
|
||||||
|
}
|
||||||
|
|
||||||
override fun visitExpression(expression: IrExpression) {
|
override fun visitExpression(expression: IrExpression) {
|
||||||
visitTypeAccess(expression, expression.type)
|
visitTypeAccess(expression, expression.type)
|
||||||
super.visitExpression(expression)
|
super.visitExpression(expression)
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
|||||||
interface IrVarargElement : IrElement
|
interface IrVarargElement : IrElement
|
||||||
|
|
||||||
abstract class IrVararg : IrExpression() {
|
abstract class IrVararg : IrExpression() {
|
||||||
abstract val varargElementType: IrType
|
abstract var varargElementType: IrType
|
||||||
|
|
||||||
abstract val elements: List<IrVarargElement>
|
abstract val elements: List<IrVarargElement>
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ class IrVarargImpl(
|
|||||||
override val startOffset: Int,
|
override val startOffset: Int,
|
||||||
override val endOffset: Int,
|
override val endOffset: Int,
|
||||||
override var type: IrType,
|
override var type: IrType,
|
||||||
override val varargElementType: IrType
|
override var varargElementType: IrType
|
||||||
) : IrVararg() {
|
) : IrVararg() {
|
||||||
constructor(
|
constructor(
|
||||||
startOffset: Int,
|
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.IrExpression
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrMemberAccessExpression
|
import org.jetbrains.kotlin.ir.expressions.IrMemberAccessExpression
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrTypeOperatorCall
|
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
|
||||||
@@ -83,4 +84,8 @@ private class RemapTypesHelper(private val typeRemapper: TypeRemapper) : IrEleme
|
|||||||
super.visitTypeOperator(expression)
|
super.visitTypeOperator(expression)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun visitVararg(expression: IrVararg) {
|
||||||
|
expression.varargElementType = typeRemapper.remapType(expression.varargElementType)
|
||||||
|
super.visitVararg(expression)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user