From 137847e0c9e8cce4a4118c3941c4ed82a32b35f8 Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Wed, 6 Apr 2016 15:59:27 +0300 Subject: [PATCH] Minor. Refactor DeserializedMemberScope.addNonDeclaredDescriptors --- .../DeserializedClassDescriptor.kt | 20 +++++++++---------- .../descriptors/DeserializedMemberScope.kt | 8 +++++++- .../DeserializedPackageMemberScope.kt | 5 ++--- 3 files changed, 18 insertions(+), 15 deletions(-) diff --git a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedClassDescriptor.kt b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedClassDescriptor.kt index 5326bba6cd1..03e0b254399 100644 --- a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedClassDescriptor.kt +++ b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedClassDescriptor.kt @@ -226,17 +226,15 @@ class DeserializedClassDescriptor( }) } - override fun addNonDeclaredDescriptors(result: MutableCollection, location: LookupLocation) { - for (supertype in classDescriptor.getTypeConstructor().supertypes) { - for (descriptor in supertype.memberScope.getContributedDescriptors()) { - if (descriptor is FunctionDescriptor) { - result.addAll(getContributedFunctions(descriptor.name, location)) - } - else if (descriptor is PropertyDescriptor) { - result.addAll(getContributedVariables(descriptor.name, location)) - } - // Nothing else is inherited - } + override fun getNonDeclaredFunctionNames(location: LookupLocation): Set { + return classDescriptor.typeConstructor.supertypes.flatMapTo(LinkedHashSet()) { + it.memberScope.getContributedDescriptors().filterIsInstance().map { it.name } + } + } + + override fun getNonDeclaredVariableNames(location: LookupLocation): Set { + return classDescriptor.typeConstructor.supertypes.flatMapTo(LinkedHashSet()) { + it.memberScope.getContributedDescriptors().filterIsInstance().map { it.name } } } diff --git a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedMemberScope.kt b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedMemberScope.kt index 3b20cd68109..eb5acf26b3f 100644 --- a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedMemberScope.kt +++ b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedMemberScope.kt @@ -165,7 +165,13 @@ abstract class DeserializedMemberScope protected constructor( } } - protected abstract fun addNonDeclaredDescriptors(result: MutableCollection, location: LookupLocation) + protected fun addNonDeclaredDescriptors(result: MutableCollection, location: LookupLocation) { + result.addAll(getNonDeclaredFunctionNames(location).flatMap { getContributedFunctions(it, location) }) + result.addAll(getNonDeclaredVariableNames(location).flatMap { getContributedVariables(it, location) }) + } + + protected abstract fun getNonDeclaredFunctionNames(location: LookupLocation): Set + protected abstract fun getNonDeclaredVariableNames(location: LookupLocation): Set protected abstract fun addEnumEntryDescriptors(result: MutableCollection, nameFilter: (Name) -> Boolean) diff --git a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedPackageMemberScope.kt b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedPackageMemberScope.kt index 68ac0d39aa3..bd9161953a0 100644 --- a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedPackageMemberScope.kt +++ b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedPackageMemberScope.kt @@ -63,9 +63,8 @@ open class DeserializedPackageMemberScope( } } - override fun addNonDeclaredDescriptors(result: MutableCollection, location: LookupLocation) { - // Do nothing - } + override fun getNonDeclaredFunctionNames(location: LookupLocation): Set = emptySet() + override fun getNonDeclaredVariableNames(location: LookupLocation): Set = emptySet() override fun addEnumEntryDescriptors(result: MutableCollection, nameFilter: (Name) -> Boolean) { // Do nothing