From 6bdf3622edeabd7a9f81109d017e83ab34982a99 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Mon, 18 Apr 2016 19:02:33 +0300 Subject: [PATCH] KT-11890 Completion for callable references does not propose static Java members #KT-11890 Fixed --- .../kotlin/idea/codeInsight/ReferenceVariantsHelper.kt | 5 +++++ .../JavaCallableReference/JavaCallableReference.java | 3 +++ .../JavaCallableReference/JavaCallableReference.kt | 6 ++++++ .../test/MultiFileJvmBasicCompletionTestGenerated.java | 6 ++++++ 4 files changed, 20 insertions(+) create mode 100644 idea/idea-completion/testData/basic/multifile/JavaCallableReference/JavaCallableReference.java create mode 100644 idea/idea-completion/testData/basic/multifile/JavaCallableReference/JavaCallableReference.kt diff --git a/idea/ide-common/src/org/jetbrains/kotlin/idea/codeInsight/ReferenceVariantsHelper.kt b/idea/ide-common/src/org/jetbrains/kotlin/idea/codeInsight/ReferenceVariantsHelper.kt index 66dde28492a..dc33b72701a 100644 --- a/idea/ide-common/src/org/jetbrains/kotlin/idea/codeInsight/ReferenceVariantsHelper.kt +++ b/idea/ide-common/src/org/jetbrains/kotlin/idea/codeInsight/ReferenceVariantsHelper.kt @@ -235,6 +235,11 @@ class ReferenceVariantsHelper( descriptors.addNonExtensionMembers(listOf(type), kindFilter, nameFilter, constructorFilter = { true }) descriptors.addScopeAndSyntheticExtensions(resolutionScope, listOf(type), CallType.CALLABLE_REFERENCE, kindFilter, nameFilter) + + val staticScope = (type.constructor.declarationDescriptor as? ClassDescriptor)?.staticScope + if (staticScope != null) { + descriptors.addAll(staticScope.getDescriptorsFiltered(kindFilter, nameFilter)) + } } else { // process non-instance members and class constructors diff --git a/idea/idea-completion/testData/basic/multifile/JavaCallableReference/JavaCallableReference.java b/idea/idea-completion/testData/basic/multifile/JavaCallableReference/JavaCallableReference.java new file mode 100644 index 00000000000..486f4b55bd8 --- /dev/null +++ b/idea/idea-completion/testData/basic/multifile/JavaCallableReference/JavaCallableReference.java @@ -0,0 +1,3 @@ +public final class JavaCallableReference { + public static void foo(){} +} \ No newline at end of file diff --git a/idea/idea-completion/testData/basic/multifile/JavaCallableReference/JavaCallableReference.kt b/idea/idea-completion/testData/basic/multifile/JavaCallableReference/JavaCallableReference.kt new file mode 100644 index 00000000000..2f7c21fc86f --- /dev/null +++ b/idea/idea-completion/testData/basic/multifile/JavaCallableReference/JavaCallableReference.kt @@ -0,0 +1,6 @@ +fun main(args: Array) { + val f = JavaCallableReference:: +} + +// INVOCATION_COUNT: 1 +// EXIST: foo \ No newline at end of file diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/MultiFileJvmBasicCompletionTestGenerated.java b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/MultiFileJvmBasicCompletionTestGenerated.java index b9119f4464f..bbb184ed18d 100644 --- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/MultiFileJvmBasicCompletionTestGenerated.java +++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/MultiFileJvmBasicCompletionTestGenerated.java @@ -161,6 +161,12 @@ public class MultiFileJvmBasicCompletionTestGenerated extends AbstractMultiFileJ doTest(fileName); } + @TestMetadata("JavaCallableReference") + public void testJavaCallableReference() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/idea-completion/testData/basic/multifile/JavaCallableReference/"); + doTest(fileName); + } + @TestMetadata("JavaInnerClasses") public void testJavaInnerClasses() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/idea-completion/testData/basic/multifile/JavaInnerClasses/");