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 f41a0d88e54..3485660e8ba 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 @@ -142,6 +142,17 @@ class ScopeValidator( super.visitTypeOperator(expression) } + override fun visitClassReference(expression: IrClassReference) { + // classType should only contain star projections, but check it to be sure. + visitTypeAccess(expression, expression.classType) + super.visitClassReference(expression) + } + + override fun visitExpression(expression: IrExpression) { + visitTypeAccess(expression, expression.type) + super.visitExpression(expression) + } + private fun visitTypeAccess(element: IrElement, type: IrType) { if (type !is IrSimpleType) return if (type.classifier is IrTypeParameterSymbol && type.classifier.owner !in accessibleTypeParameters) { @@ -154,11 +165,6 @@ class ScopeValidator( } } - override fun visitExpression(expression: IrExpression) { - visitTypeAccess(expression, expression.type) - super.visitExpression(expression) - } - private inline fun handleTypeParameterContainer(typeParameters: List, block: () -> Unit) { accessibleTypeParameters.addAll(typeParameters) block()