From 20ac76fe3a2f7a674a1e557f2c70a90abd83dfbb Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Thu, 31 Mar 2016 20:32:04 +0300 Subject: [PATCH] Member functions of enum should not be in smart completion --- .../kotlin/idea/completion/smart/StaticMembers.kt | 9 ++++++--- idea/idea-completion/testData/smart/EnumMembers.kt | 6 ++++-- 2 files changed, 10 insertions(+), 5 deletions(-) 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 ad38cd72fd1..e39a13a5e09 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 @@ -105,9 +105,12 @@ class StaticMembers( .forEach(::processMember) } - var members = classDescriptor.defaultType.memberScope.getContributedDescriptors() - if (classDescriptor.kind != ClassKind.ENUM_CLASS && classDescriptor.kind != ClassKind.OBJECT) { - members = members.filter { DescriptorUtils.isNonCompanionObject(it) } + val members = classDescriptor.defaultType.memberScope.getContributedDescriptors().filter { member -> + when (classDescriptor.kind) { + ClassKind.ENUM_CLASS -> member is ClassDescriptor // enum member + ClassKind.OBJECT -> true + else -> DescriptorUtils.isNonCompanionObject(member) + } } members.forEach(::processMember) } diff --git a/idea/idea-completion/testData/smart/EnumMembers.kt b/idea/idea-completion/testData/smart/EnumMembers.kt index 7f82a470fa4..fceff67eb1d 100644 --- a/idea/idea-completion/testData/smart/EnumMembers.kt +++ b/idea/idea-completion/testData/smart/EnumMembers.kt @@ -1,8 +1,9 @@ package sample enum class Foo { - X, - Y + X, Y; + + fun foo(): Foo = this } fun foo(){ @@ -11,3 +12,4 @@ fun foo(){ // EXIST: { lookupString:"X", itemText:"Foo.X", tailText:" (sample)", typeText:"Foo" } // EXIST: { lookupString:"Y", itemText:"Foo.Y", tailText:" (sample)", typeText:"Foo" } +// ABSENT: { itemText:"Foo.foo" }