diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/receivers/Qualifier.kt b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/receivers/Qualifier.kt index bc73a41562c..234c952f814 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/receivers/Qualifier.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/receivers/Qualifier.kt @@ -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)) - } -} - - diff --git a/compiler/testData/diagnostics/tests/classObjects/ClassObjectVisibility.kt b/compiler/testData/diagnostics/tests/classObjects/ClassObjectVisibility.kt index c139c4354f3..7dd8a02cd87 100644 --- a/compiler/testData/diagnostics/tests/classObjects/ClassObjectVisibility.kt +++ b/compiler/testData/diagnostics/tests/classObjects/ClassObjectVisibility.kt @@ -3,8 +3,9 @@ package foo fun test() { A.d A.f + B.D CCC - CCC.classObjectVar + CCC.classObjectVar } class A() { @@ -16,6 +17,12 @@ class A() { } } +class B { + class D { + private class object + } +} + class CCC() { private class object { val classObjectVar = 3 diff --git a/compiler/testData/diagnostics/tests/classObjects/invisibleClassObjects.kt b/compiler/testData/diagnostics/tests/classObjects/invisibleClassObjects.kt index d2a394102a9..8e71ba12fc2 100644 --- a/compiler/testData/diagnostics/tests/classObjects/invisibleClassObjects.kt +++ b/compiler/testData/diagnostics/tests/classObjects/invisibleClassObjects.kt @@ -40,12 +40,12 @@ fun test() { f(D) A.foo() - B.bar() - C.baz() - D.quux() + B.bar() + C.baz() + D.quux() a.A.foo() - a.C.baz() + a.C.baz() } fun f(unused: Any) {} diff --git a/compiler/testData/diagnostics/tests/classObjects/nestedClassInPrivateClassObject.kt b/compiler/testData/diagnostics/tests/classObjects/nestedClassInPrivateClassObject.kt index 0bc858ff428..934a8343968 100644 --- a/compiler/testData/diagnostics/tests/classObjects/nestedClassInPrivateClassObject.kt +++ b/compiler/testData/diagnostics/tests/classObjects/nestedClassInPrivateClassObject.kt @@ -10,6 +10,6 @@ class A { } } -fun f1() = A.B.C +fun f1() = A.B.C -fun f2() = A.B.C.foo() +fun f2() = A.B.C.foo() \ No newline at end of file