From a542bb6af74f6b78d484f10a3b3d176583903724 Mon Sep 17 00:00:00 2001 From: Georgy Bronnikov Date: Tue, 15 Sep 2020 18:41:05 +0300 Subject: [PATCH] IR: check IrClassReference.classType in ScopeValidator --- .../kotlin/backend/common/ScopeValidator.kt | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) 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()