Find Usages: Restrict search scope of class object private declarations to
the containing class
This commit is contained in:
@@ -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();
|
||||
|
||||
+10
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
+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");
|
||||
|
||||
Reference in New Issue
Block a user