diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetNamedDeclarationStub.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetNamedDeclarationStub.java index 273a662112c..6396db83d2e 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetNamedDeclarationStub.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetNamedDeclarationStub.java @@ -95,7 +95,15 @@ abstract class JetNamedDeclarationStub extends J if (hasModifier(JetTokens.PRIVATE_KEYWORD)) { JetElement containingClass = PsiTreeUtil.getParentOfType(this, JetClassOrObject.class); - if (containingClass != null) return new LocalSearchScope(containingClass); + if (containingClass instanceof JetObjectDeclaration && ((JetObjectDeclaration) containingClass).isClassObject()) { + JetElement classObjectClass = PsiTreeUtil.getParentOfType(containingClass, JetClassOrObject.class); + if (classObjectClass != null) { + containingClass = classObjectClass; + } + } + if (containingClass != null) { + return new LocalSearchScope(containingClass); + } } return super.getUseScope(); diff --git a/idea/testData/findUsages/kotlin/findPropertyUsages/kotlinPrivatePropertyInClassObjectUsages.0.kt b/idea/testData/findUsages/kotlin/findPropertyUsages/kotlinPrivatePropertyInClassObjectUsages.0.kt new file mode 100644 index 00000000000..f55f00acfec --- /dev/null +++ b/idea/testData/findUsages/kotlin/findPropertyUsages/kotlinPrivatePropertyInClassObjectUsages.0.kt @@ -0,0 +1,10 @@ +// PSI_ELEMENT: org.jetbrains.jet.lang.psi.JetProperty +// OPTIONS: usages +class Outer { + val x = Outer.t + + class object { + private val t = 1 + } +} + diff --git a/idea/testData/findUsages/kotlin/findPropertyUsages/kotlinPrivatePropertyInClassObjectUsages.results.txt b/idea/testData/findUsages/kotlin/findPropertyUsages/kotlinPrivatePropertyInClassObjectUsages.results.txt new file mode 100644 index 00000000000..f62cc239193 --- /dev/null +++ b/idea/testData/findUsages/kotlin/findPropertyUsages/kotlinPrivatePropertyInClassObjectUsages.results.txt @@ -0,0 +1 @@ +Value read (4: 19) val x = Outer.t \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/findUsages/JetFindUsagesTestGenerated.java b/idea/tests/org/jetbrains/jet/findUsages/JetFindUsagesTestGenerated.java index 2165304f922..748104f0c6f 100644 --- a/idea/tests/org/jetbrains/jet/findUsages/JetFindUsagesTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/findUsages/JetFindUsagesTestGenerated.java @@ -702,6 +702,12 @@ public class JetFindUsagesTestGenerated extends AbstractJetFindUsagesTest { doTest(fileName); } + @TestMetadata("kotlinPrivatePropertyInClassObjectUsages.0.kt") + public void testKotlinPrivatePropertyInClassObjectUsages() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/findUsages/kotlin/findPropertyUsages/kotlinPrivatePropertyInClassObjectUsages.0.kt"); + doTest(fileName); + } + @TestMetadata("kotlinPrivatePropertyUsages.0.kt") public void testKotlinPrivatePropertyUsages() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/findUsages/kotlin/findPropertyUsages/kotlinPrivatePropertyUsages.0.kt");