From d8ebb701518a8e16cb567df7c28456ce13f3d56b Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Thu, 6 Dec 2018 13:01:44 +0300 Subject: [PATCH] Advance enum entries in smart completion list ^KT-22579 Fixed --- .../idea/completion/smart/StaticMembers.kt | 7 ++++++- .../kotlin/idea/completion/smart/Utils.kt | 1 + .../testData/smart/EnumExpected.kt | 21 +++++++++++++++++++ .../test/JvmSmartCompletionTestGenerated.java | 5 +++++ 4 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 idea/idea-completion/testData/smart/EnumExpected.kt diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/smart/StaticMembers.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/smart/StaticMembers.kt index 4a8a4a5fb80..c2d10abd1da 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/smart/StaticMembers.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/smart/StaticMembers.kt @@ -91,7 +91,7 @@ class StaticMembers( expectedInfos: Collection, context: KtSimpleNameExpression, enumEntriesToSkip: Set, - priority: SmartCompletionItemPriority + defaultPriority: SmartCompletionItemPriority ) { fun processMember(descriptor: DeclarationDescriptor) { if (descriptor is DeclarationDescriptorWithVisibility && !descriptor.isVisible( @@ -114,6 +114,11 @@ class StaticMembers( else -> return } + val priority = when { + DescriptorUtils.isEnumEntry(descriptor) -> SmartCompletionItemPriority.ENUM_ENTRIES + else -> defaultPriority + } + collection.addLookupElements(descriptor, expectedInfos, matcher) { createLookupElements(it, priority) } } diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/smart/Utils.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/smart/Utils.kt index 00483bf3905..3f825fc500d 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/smart/Utils.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/smart/Utils.kt @@ -277,6 +277,7 @@ enum class SmartCompletionItemPriority { CLASS_LITERAL, THIS, DELEGATES_STATIC_MEMBER, + ENUM_ENTRIES, DEFAULT, NULLABLE, INSTANTIATION, diff --git a/idea/idea-completion/testData/smart/EnumExpected.kt b/idea/idea-completion/testData/smart/EnumExpected.kt new file mode 100644 index 00000000000..7a336735870 --- /dev/null +++ b/idea/idea-completion/testData/smart/EnumExpected.kt @@ -0,0 +1,21 @@ +package sample + +enum class Foo { + X, Y +} + +fun foo(){ + val f : Foo = +} + +// WITH_ORDER +// EXIST: { lookupString:"X", itemText:"Foo.X", tailText:" (sample)", typeText:"Foo" } +// EXIST: { lookupString:"Y", itemText:"Foo.Y", tailText:" (sample)", typeText:"Foo" } +// EXIST: {"lookupString":"enumValueOf","tailText":"(name: String) (kotlin)","typeText":"Foo","attributes":"","allLookupStrings":"enumValueOf","itemText":"enumValueOf"} +// EXIST: {"lookupString":"maxOf","tailText":"(a: Foo, b: Foo) (kotlin.comparisons)","typeText":"Foo","attributes":"","allLookupStrings":"maxOf","itemText":"maxOf"} +// EXIST: {"lookupString":"maxOf","tailText":"(a: Foo, b: Foo, c: Foo) (kotlin.comparisons)","typeText":"Foo","attributes":"","allLookupStrings":"maxOf","itemText":"maxOf"} +// EXIST: {"lookupString":"minOf","tailText":"(a: Foo, b: Foo) (kotlin.comparisons)","typeText":"Foo","attributes":"","allLookupStrings":"minOf","itemText":"minOf"} +// EXIST: {"lookupString":"minOf","tailText":"(a: Foo, b: Foo, c: Foo) (kotlin.comparisons)","typeText":"Foo","attributes":"","allLookupStrings":"minOf","itemText":"minOf"} +// EXIST: {"lookupString":"valueOf","tailText":"(value: String) (sample)","typeText":"Foo","module":"light_idea_test_case","attributes":"","allLookupStrings":"Foo, valueOf","itemText":"Foo.valueOf"} + +// NOTHING_ELSE diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JvmSmartCompletionTestGenerated.java b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JvmSmartCompletionTestGenerated.java index 24cb8341cf2..32a31139761 100644 --- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JvmSmartCompletionTestGenerated.java +++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JvmSmartCompletionTestGenerated.java @@ -114,6 +114,11 @@ public class JvmSmartCompletionTestGenerated extends AbstractJvmSmartCompletionT runTest("idea/idea-completion/testData/smart/EmptyPrefix.kt"); } + @TestMetadata("EnumExpected.kt") + public void testEnumExpected() throws Exception { + runTest("idea/idea-completion/testData/smart/EnumExpected.kt"); + } + @TestMetadata("EnumMembers.kt") public void testEnumMembers() throws Exception { runTest("idea/idea-completion/testData/smart/EnumMembers.kt");