Find Usages: Restrict search scope of class object private declarations to

the containing class
This commit is contained in:
Alexey Sedunov
2014-11-27 15:43:45 +03:00
parent c012efe64e
commit 74cdecd829
4 changed files with 26 additions and 1 deletions
@@ -95,7 +95,15 @@ abstract class JetNamedDeclarationStub<T extends KotlinStubWithFqName> 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();
@@ -0,0 +1,10 @@
// PSI_ELEMENT: org.jetbrains.jet.lang.psi.JetProperty
// OPTIONS: usages
class Outer {
val x = Outer.t
class object {
private val <caret>t = 1
}
}
@@ -0,0 +1 @@
Value read (4: 19) val x = Outer.t
@@ -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");