IR: check IrClassReference.classType in ScopeValidator
This commit is contained in:
+11
-5
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user