Don't check class object visibility when it's in qualifier position

(visibility for member is checked anyway).
It might be better to underline invisible qualifier in a chain (class or class object), not the last one (member) - for later improvement.
This commit is contained in:
Svetlana Isakova
2014-08-23 16:09:35 +04:00
parent 3767187027
commit 132c292d32
4 changed files with 14 additions and 21 deletions
@@ -149,7 +149,6 @@ private fun QualifierReceiver.resolveAsReceiverInQualifiedExpression(context: Ex
context.trace.report(TYPE_PARAMETER_ON_LHS_OF_DOT.on(referenceExpression, classifier as TypeParameterDescriptor))
}
else if (classifier is ClassDescriptor && classifier.getClassObjectDescriptor() != null) {
checkClassObjectVisibility(context)
context.trace.record(EXPRESSION_TYPE, referenceExpression, classifier.getClassObjectType())
}
}
@@ -183,16 +182,3 @@ private fun QualifierReceiver.resolveReferenceTarget(selector: DeclarationDescri
return descriptor
}
private fun QualifierReceiver.checkClassObjectVisibility(context: ExpressionTypingContext) {
if (classifier !is ClassDescriptor) return
val scopeContainer = context.scope.getContainingDeclaration()
val classObject = classifier.getClassObjectDescriptor()
assert(classObject != null) { "This check should be done only for classes with class objects: " + classifier }
if (!Visibilities.isVisible(classObject!!, scopeContainer)) {
context.trace.report(INVISIBLE_MEMBER.on(referenceExpression, classObject, classObject.getVisibility(), scopeContainer))
}
}