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 81a8afd69be..f41a0d88e54 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 @@ -123,6 +123,13 @@ class ScopeValidator( super.visitVariableAccess(expression) } + override fun visitMemberAccess(expression: IrMemberAccessExpression<*>) { + for (i in 0 until expression.typeArgumentsCount) { + expression.getTypeArgument(i)?.let { visitTypeAccess(expression, it) } + } + super.visitMemberAccess(expression) + } + override fun visitCatch(aCatch: IrCatch) { // catchParameter only has scope over result expression handleValuesContainer(emptyList()) { 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 28ce7a0dca6..9d3dbb0b9f2 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 @@ -8,6 +8,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.visitors.IrElementVisitorVoid import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid @@ -70,6 +71,13 @@ private class RemapTypesHelper(private val typeRemapper: TypeRemapper) : IrEleme super.visitExpression(expression) } + override fun visitMemberAccess(expression: IrMemberAccessExpression<*>) { + for (i in 0 until expression.typeArgumentsCount) { + expression.getTypeArgument(i)?.let { expression.putTypeArgument(i, typeRemapper.remapType(it)) } + } + super.visitMemberAccess(expression) + } + override fun visitTypeOperator(expression: IrTypeOperatorCall) { expression.typeOperand = typeRemapper.remapType(expression.typeOperand) super.visitTypeOperator(expression)