diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/references/referenceUtil.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/references/referenceUtil.kt index 51d9a8f275d..460e68de458 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/references/referenceUtil.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/references/referenceUtil.kt @@ -75,7 +75,7 @@ fun PsiReference.matchesTarget(candidateTarget: PsiElement): Boolean { // Optimizations when (this) { is KtInvokeFunctionReference -> { - if (candidateTarget !is KtNamedFunction) return false + if (candidateTarget !is KtNamedFunction && candidateTarget !is PsiMethod) return false } is KtDestructuringDeclarationReference -> { if (candidateTarget !is KtNamedFunction && candidateTarget !is KtParameter && candidateTarget !is PsiMethod) return false diff --git a/idea/testData/findUsages/java/findJavaMethodUsages/javaInvoke.0.java b/idea/testData/findUsages/java/findJavaMethodUsages/javaInvoke.0.java new file mode 100644 index 00000000000..6d83e30be2d --- /dev/null +++ b/idea/testData/findUsages/java/findJavaMethodUsages/javaInvoke.0.java @@ -0,0 +1,7 @@ +// PSI_ELEMENT: com.intellij.psi.PsiMethod +// OPTIONS: usages + +public class JavaClass { + public void invoke() { + } +} \ No newline at end of file diff --git a/idea/testData/findUsages/java/findJavaMethodUsages/javaInvoke.0.kt b/idea/testData/findUsages/java/findJavaMethodUsages/javaInvoke.0.kt new file mode 100644 index 00000000000..603d71b954a --- /dev/null +++ b/idea/testData/findUsages/java/findJavaMethodUsages/javaInvoke.0.kt @@ -0,0 +1,3 @@ +fun f(c: JavaClass) { + c() +} \ No newline at end of file diff --git a/idea/testData/findUsages/java/findJavaMethodUsages/javaInvoke.log b/idea/testData/findUsages/java/findJavaMethodUsages/javaInvoke.log new file mode 100644 index 00000000000..bae2f92ad68 --- /dev/null +++ b/idea/testData/findUsages/java/findJavaMethodUsages/javaInvoke.log @@ -0,0 +1,3 @@ +Resolved c() +Searched references to JavaClass +Searched references to parameter c of f(c: JavaClass) in Kotlin files diff --git a/idea/testData/findUsages/java/findJavaMethodUsages/javaInvoke.results.txt b/idea/testData/findUsages/java/findJavaMethodUsages/javaInvoke.results.txt new file mode 100644 index 00000000000..f1711ad4791 --- /dev/null +++ b/idea/testData/findUsages/java/findJavaMethodUsages/javaInvoke.results.txt @@ -0,0 +1 @@ +Implicit 'invoke' 2 c() \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/findUsages/FindUsagesTestGenerated.java b/idea/tests/org/jetbrains/kotlin/findUsages/FindUsagesTestGenerated.java index 3bbddbbf8a7..40807e73b2f 100644 --- a/idea/tests/org/jetbrains/kotlin/findUsages/FindUsagesTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/findUsages/FindUsagesTestGenerated.java @@ -1575,6 +1575,12 @@ public class FindUsagesTestGenerated extends AbstractFindUsagesTest { doTest(fileName); } + @TestMetadata("javaInvoke.0.java") + public void testJavaInvoke() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/findUsages/java/findJavaMethodUsages/javaInvoke.0.java"); + doTest(fileName); + } + @TestMetadata("OverriddenMethodSyntheticAccessor.0.java") public void testOverriddenMethodSyntheticAccessor() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/findUsages/java/findJavaMethodUsages/OverriddenMethodSyntheticAccessor.0.java");