From 91220faf066e598fe27946ceae01c5a8f076b2cd Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Tue, 23 Dec 2014 15:20:04 +0300 Subject: [PATCH] KT-6122 Code completion in when in enum extension methods suggests non-qualified enum entry names #KT-6122 Fixed --- .../plugin/codeInsight/ReferenceVariantsHelper.kt | 5 ++--- .../common/NoEnumMembersFromImplicitQualifier.kt | 11 +++++++++++ .../common/NoNestedClassesFromImplicitQualifier.kt | 11 +++++++++++ .../completion/JSBasicCompletionTestGenerated.java | 12 ++++++++++++ .../completion/JvmBasicCompletionTestGenerated.java | 12 ++++++++++++ 5 files changed, 48 insertions(+), 3 deletions(-) create mode 100644 idea/testData/completion/basic/common/NoEnumMembersFromImplicitQualifier.kt create mode 100644 idea/testData/completion/basic/common/NoNestedClassesFromImplicitQualifier.kt diff --git a/idea/ide-common/src/org/jetbrains/jet/plugin/codeInsight/ReferenceVariantsHelper.kt b/idea/ide-common/src/org/jetbrains/jet/plugin/codeInsight/ReferenceVariantsHelper.kt index 92e35e80a58..76c3726d00d 100644 --- a/idea/ide-common/src/org/jetbrains/jet/plugin/codeInsight/ReferenceVariantsHelper.kt +++ b/idea/ide-common/src/org/jetbrains/jet/plugin/codeInsight/ReferenceVariantsHelper.kt @@ -113,9 +113,8 @@ public class ReferenceVariantsHelper( // process instance members that can be called via implicit receiver's instances val receivers = resolutionScope.getImplicitReceiversWithInstance() - receivers.flatMapTo(descriptorsSet) { - it.getType().getMemberScope().getDescriptorsFiltered(kindFilter exclude DescriptorKindExclude.Extensions, nameFilter) - } + val fromReceiversFilter = kindFilter.withoutKinds(DescriptorKindFilter.CLASSIFIERS_MASK) exclude DescriptorKindExclude.Extensions + receivers.flatMapTo(descriptorsSet) { it.getType().getMemberScope().getDescriptorsFiltered(fromReceiversFilter, nameFilter) } val dataFlowInfo = context.getDataFlowInfo(expression) val receiverValues = receivers.map { it.getValue() } diff --git a/idea/testData/completion/basic/common/NoEnumMembersFromImplicitQualifier.kt b/idea/testData/completion/basic/common/NoEnumMembersFromImplicitQualifier.kt new file mode 100644 index 00000000000..0c46f8cf8cd --- /dev/null +++ b/idea/testData/completion/basic/common/NoEnumMembersFromImplicitQualifier.kt @@ -0,0 +1,11 @@ +enum class E { + A + B +} + +fun E.foo() { + +} + +// ABSENT: A +// ABSENT: B \ No newline at end of file diff --git a/idea/testData/completion/basic/common/NoNestedClassesFromImplicitQualifier.kt b/idea/testData/completion/basic/common/NoNestedClassesFromImplicitQualifier.kt new file mode 100644 index 00000000000..e7f9a510108 --- /dev/null +++ b/idea/testData/completion/basic/common/NoNestedClassesFromImplicitQualifier.kt @@ -0,0 +1,11 @@ +class Outer { + class Nested + inner class Inner +} + +fun Outer.foo() { + +} + +// ABSENT: Nested +// ABSENT: Inner diff --git a/idea/tests/org/jetbrains/jet/completion/JSBasicCompletionTestGenerated.java b/idea/tests/org/jetbrains/jet/completion/JSBasicCompletionTestGenerated.java index 1ca39c2ecd3..bf7ca9fe348 100644 --- a/idea/tests/org/jetbrains/jet/completion/JSBasicCompletionTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/completion/JSBasicCompletionTestGenerated.java @@ -706,6 +706,12 @@ public class JSBasicCompletionTestGenerated extends AbstractJSBasicCompletionTes doTest(fileName); } + @TestMetadata("NoEnumMembersFromImplicitQualifier.kt") + public void testNoEnumMembersFromImplicitQualifier() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/NoEnumMembersFromImplicitQualifier.kt"); + doTest(fileName); + } + @TestMetadata("NoExtensionsAfterQualifier.kt") public void testNoExtensionsAfterQualifier() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/NoExtensionsAfterQualifier.kt"); @@ -718,6 +724,12 @@ public class JSBasicCompletionTestGenerated extends AbstractJSBasicCompletionTes doTest(fileName); } + @TestMetadata("NoNestedClassesFromImplicitQualifier.kt") + public void testNoNestedClassesFromImplicitQualifier() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/NoNestedClassesFromImplicitQualifier.kt"); + doTest(fileName); + } + @TestMetadata("NoPackageFacadeClasses.kt") public void testNoPackageFacadeClasses() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/NoPackageFacadeClasses.kt"); diff --git a/idea/tests/org/jetbrains/jet/completion/JvmBasicCompletionTestGenerated.java b/idea/tests/org/jetbrains/jet/completion/JvmBasicCompletionTestGenerated.java index 8cb8948c2a5..07c37bb9df9 100644 --- a/idea/tests/org/jetbrains/jet/completion/JvmBasicCompletionTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/completion/JvmBasicCompletionTestGenerated.java @@ -706,6 +706,12 @@ public class JvmBasicCompletionTestGenerated extends AbstractJvmBasicCompletionT doTest(fileName); } + @TestMetadata("NoEnumMembersFromImplicitQualifier.kt") + public void testNoEnumMembersFromImplicitQualifier() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/NoEnumMembersFromImplicitQualifier.kt"); + doTest(fileName); + } + @TestMetadata("NoExtensionsAfterQualifier.kt") public void testNoExtensionsAfterQualifier() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/NoExtensionsAfterQualifier.kt"); @@ -718,6 +724,12 @@ public class JvmBasicCompletionTestGenerated extends AbstractJvmBasicCompletionT doTest(fileName); } + @TestMetadata("NoNestedClassesFromImplicitQualifier.kt") + public void testNoNestedClassesFromImplicitQualifier() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/NoNestedClassesFromImplicitQualifier.kt"); + doTest(fileName); + } + @TestMetadata("NoPackageFacadeClasses.kt") public void testNoPackageFacadeClasses() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/NoPackageFacadeClasses.kt");