IR: check IrClassReference.classType in ScopeValidator

This commit is contained in:
Georgy Bronnikov
2020-09-15 18:41:05 +03:00
parent 728c55973a
commit a542bb6af7
@@ -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<IrTypeParameter>, block: () -> Unit) {
accessibleTypeParameters.addAll(typeParameters)
block()