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)) {
|
if (hasModifier(JetTokens.PRIVATE_KEYWORD)) {
|
||||||
JetElement containingClass = PsiTreeUtil.getParentOfType(this, JetClassOrObject.class);
|
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();
|
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);
|
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")
|
@TestMetadata("kotlinPrivatePropertyUsages.0.kt")
|
||||||
public void testKotlinPrivatePropertyUsages() throws Exception {
|
public void testKotlinPrivatePropertyUsages() throws Exception {
|
||||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/findUsages/kotlin/findPropertyUsages/kotlinPrivatePropertyUsages.0.kt");
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/findUsages/kotlin/findPropertyUsages/kotlinPrivatePropertyUsages.0.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user