Advance enum entries in smart completion list

^KT-22579 Fixed
This commit is contained in:
Denis Zharkov
2018-12-06 13:01:44 +03:00
parent d2d81d6ddc
commit d8ebb70151
4 changed files with 33 additions and 1 deletions
@@ -91,7 +91,7 @@ class StaticMembers(
expectedInfos: Collection<ExpectedInfo>,
context: KtSimpleNameExpression,
enumEntriesToSkip: Set<DeclarationDescriptor>,
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) }
}
@@ -277,6 +277,7 @@ enum class SmartCompletionItemPriority {
CLASS_LITERAL,
THIS,
DELEGATES_STATIC_MEMBER,
ENUM_ENTRIES,
DEFAULT,
NULLABLE,
INSTANTIATION,
+21
View File
@@ -0,0 +1,21 @@
package sample
enum class Foo {
X, Y
}
fun foo(){
val f : Foo = <caret>
}
// 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
@@ -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");