diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/receivers/Qualifier.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/receivers/Qualifier.kt
index cd92d9fe6e6..9ea9a9bb7bc 100644
--- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/receivers/Qualifier.kt
+++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/receivers/Qualifier.kt
@@ -161,20 +161,17 @@ private fun QualifierReceiver.resolveReferenceTarget(selector: DeclarationDescri
return classifier
}
- val containingDeclaration = when {
+ val selectorContainer = when {
selector is ConstructorDescriptor -> selector.getContainingDeclaration().getContainingDeclaration()
else -> selector?.getContainingDeclaration()
}
- if (packageView != null && (containingDeclaration is PackageFragmentDescriptor || containingDeclaration is PackageViewDescriptor)
- && getFqName(packageView) == getFqName(containingDeclaration)) {
+ if (packageView != null && (selectorContainer is PackageFragmentDescriptor || selectorContainer is PackageViewDescriptor)
+ && getFqName(packageView) == getFqName(selectorContainer)) {
return packageView
}
- if (classifier != null && containingDeclaration is ClassDescriptor && classifier == containingDeclaration) {
- return classifier
- }
- if (classifier is ClassDescriptor && classifier.classObjectDescriptor != null) {
+ if (classifier is ClassDescriptor && classifier.classObjectDescriptor == selectorContainer) {
return classifier.getClassObjectReferenceTarget()
}
diff --git a/idea/testData/highlighter/deprecated/ClassObject.kt b/idea/testData/highlighter/deprecated/ClassObject.kt
index ebea55e9309..b5a68f2f35c 100644
--- a/idea/testData/highlighter/deprecated/ClassObject.kt
+++ b/idea/testData/highlighter/deprecated/ClassObject.kt
@@ -7,7 +7,7 @@ fun test() {
MyTrait.Default
MyTrait
MyClass.Default
- MyClass.Default.test
+ MyClass.Default.test
a == b
}
diff --git a/idea/testData/resolve/references/ClassObjectClassLiteralReference.kt b/idea/testData/resolve/references/ClassObjectClassLiteralReference.kt
new file mode 100644
index 00000000000..264f019adbf
--- /dev/null
+++ b/idea/testData/resolve/references/ClassObjectClassLiteralReference.kt
@@ -0,0 +1,12 @@
+package t
+
+class A {
+ class object Named {
+ }
+}
+
+fun f() {
+ A.Named
+}
+
+// REF: (t).A
\ No newline at end of file
diff --git a/idea/testData/resolve/references/ClassObjectClassLiteralReferenceWithField.kt b/idea/testData/resolve/references/ClassObjectClassLiteralReferenceWithField.kt
new file mode 100644
index 00000000000..497af07deba
--- /dev/null
+++ b/idea/testData/resolve/references/ClassObjectClassLiteralReferenceWithField.kt
@@ -0,0 +1,13 @@
+package t
+
+class A {
+ class object Named {
+ val i: Int
+ }
+}
+
+fun f() {
+ A.Named.i
+}
+
+// REF: (t).A
\ No newline at end of file
diff --git a/idea/tests/org/jetbrains/kotlin/idea/resolve/ReferenceResolveTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/resolve/ReferenceResolveTestGenerated.java
index 98b9e97d1ed..bb6bde280d4 100644
--- a/idea/tests/org/jetbrains/kotlin/idea/resolve/ReferenceResolveTestGenerated.java
+++ b/idea/tests/org/jetbrains/kotlin/idea/resolve/ReferenceResolveTestGenerated.java
@@ -83,6 +83,18 @@ public class ReferenceResolveTestGenerated extends AbstractReferenceResolveTest
doTest(fileName);
}
+ @TestMetadata("ClassObjectClassLiteralReference.kt")
+ public void testClassObjectClassLiteralReference() throws Exception {
+ String fileName = JetTestUtils.navigationMetadata("idea/testData/resolve/references/ClassObjectClassLiteralReference.kt");
+ doTest(fileName);
+ }
+
+ @TestMetadata("ClassObjectClassLiteralReferenceWithField.kt")
+ public void testClassObjectClassLiteralReferenceWithField() throws Exception {
+ String fileName = JetTestUtils.navigationMetadata("idea/testData/resolve/references/ClassObjectClassLiteralReferenceWithField.kt");
+ doTest(fileName);
+ }
+
@TestMetadata("ClassReferenceInImport.kt")
public void testClassReferenceInImport() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/testData/resolve/references/ClassReferenceInImport.kt");