diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ScopeValidator.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ScopeValidator.kt index 3485660e8ba..5d5fc9c1385 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ScopeValidator.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ScopeValidator.kt @@ -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) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrVararg.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrVararg.kt index 7b0c07aa2d1..d26b0bca630 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrVararg.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrVararg.kt @@ -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 diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrVarargImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrVarargImpl.kt index cee9e04d600..00be489e33b 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrVarargImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrVarargImpl.kt @@ -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, 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 9d3dbb0b9f2..68eb84a53a1 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 @@ -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) + } } \ No newline at end of file