Find Usages: Fix reference check for the case of multiple resolve results
This commit is contained in:
@@ -33,6 +33,7 @@ import com.intellij.psi.util.PsiTreeUtil
|
|||||||
import org.jetbrains.jet.lang.psi.JetObjectDeclaration
|
import org.jetbrains.jet.lang.psi.JetObjectDeclaration
|
||||||
import org.jetbrains.jet.lang.psi.JetClassObject
|
import org.jetbrains.jet.lang.psi.JetClassObject
|
||||||
import org.jetbrains.jet.lang.psi.JetClass
|
import org.jetbrains.jet.lang.psi.JetClass
|
||||||
|
import com.intellij.psi.PsiPolyVariantReference
|
||||||
|
|
||||||
// Navigation element of the resolved reference
|
// Navigation element of the resolved reference
|
||||||
// For property accessor return enclosing property
|
// For property accessor return enclosing property
|
||||||
@@ -49,7 +50,7 @@ public val PsiReference.unwrappedTargets: Set<PsiElement>
|
|||||||
}
|
}
|
||||||
|
|
||||||
return when (this) {
|
return when (this) {
|
||||||
is JetMultiReference<*> -> multiResolve(false).map { it.getElement()?.adjust() }.filterNotNullTo(HashSet<PsiElement>())
|
is PsiPolyVariantReference -> multiResolve(false).map { it.getElement()?.adjust() }.filterNotNullTo(HashSet<PsiElement>())
|
||||||
else -> ContainerUtil.createMaybeSingletonSet(resolve()?.adjust())
|
else -> ContainerUtil.createMaybeSingletonSet(resolve()?.adjust())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
Function call (12: 20) A(0).plus(A(1).plus(2))
|
|
||||||
Function call (10: 17) A(0) + A(1) + 2
|
Function call (10: 17) A(0) + A(1) + 2
|
||||||
Function call (11: 20) A(0) plus A(1) plus 2
|
Function call (11: 20) A(0) plus A(1) plus 2
|
||||||
|
Function call (12: 20) A(0).plus(A(1).plus(2))
|
||||||
Function call (15: 7) a += 1
|
Function call (15: 7) a += 1
|
||||||
Function call (6: 30) fun plus(a: A): A = this + a.n
|
Function call (6: 30) fun plus(a: A): A = this + a.n
|
||||||
|
Unclassified usage (18: 5) +A(0)
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
// PSI_ELEMENT: org.jetbrains.jet.lang.psi.JetNamedFunction
|
||||||
|
// OPTIONS: usages
|
||||||
|
package server
|
||||||
|
|
||||||
|
fun <caret>foo() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Int.foo() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun foo(n: Int) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
val foo: Int
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
// PSI_ELEMENT: org.jetbrains.jet.lang.psi.JetNamedFunction
|
||||||
|
// OPTIONS: usages
|
||||||
|
package client
|
||||||
|
|
||||||
|
import server.foo
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
foo()
|
||||||
|
foo(1)
|
||||||
|
val t = foo
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
Function call (8: 5) foo()
|
||||||
|
Usage in import (5: 15) import server.foo
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
// PSI_ELEMENT: org.jetbrains.jet.lang.psi.JetProperty
|
||||||
|
// OPTIONS: usages
|
||||||
|
package server
|
||||||
|
|
||||||
|
fun foo() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
val <caret>foo: Int = 1
|
||||||
|
|
||||||
|
val Int.foo: Int = 2
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
// PSI_ELEMENT: org.jetbrains.jet.lang.psi.JetProperty
|
||||||
|
// OPTIONS: usages
|
||||||
|
package client
|
||||||
|
|
||||||
|
import server.foo
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
foo()
|
||||||
|
val t = 1.foo + foo
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
Usage in import (5: 15) import server.foo
|
||||||
|
Value read (9: 21) val t = 1.foo + foo
|
||||||
@@ -472,6 +472,12 @@ public class JetFindUsagesTestGenerated extends AbstractJetFindUsagesTest {
|
|||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kotlinMultiRefInImport.0.kt")
|
||||||
|
public void testKotlinMultiRefInImport() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/findUsages/kotlin/findFunctionUsages/kotlinMultiRefInImport.0.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("kotlinOverloadAndExtensionUsages.0.kt")
|
@TestMetadata("kotlinOverloadAndExtensionUsages.0.kt")
|
||||||
public void testKotlinOverloadAndExtensionUsages() throws Exception {
|
public void testKotlinOverloadAndExtensionUsages() throws Exception {
|
||||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/findUsages/kotlin/findFunctionUsages/kotlinOverloadAndExtensionUsages.0.kt");
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/findUsages/kotlin/findFunctionUsages/kotlinOverloadAndExtensionUsages.0.kt");
|
||||||
@@ -674,6 +680,12 @@ public class JetFindUsagesTestGenerated extends AbstractJetFindUsagesTest {
|
|||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kotlinMultiRefInImport.0.kt")
|
||||||
|
public void testKotlinMultiRefInImport() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/findUsages/kotlin/findPropertyUsages/kotlinMultiRefInImport.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