From 49fee026fc88ed81b84c41594248b3b66793b7de Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Tue, 27 Sep 2016 10:27:17 +0300 Subject: [PATCH] Minor. Simplify CodegenUtil.getDelegates --- .../kotlin/backend/common/CodegenUtil.kt | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/compiler/backend-common/src/org/jetbrains/kotlin/backend/common/CodegenUtil.kt b/compiler/backend-common/src/org/jetbrains/kotlin/backend/common/CodegenUtil.kt index 1a1360dd619..40a25ecbc79 100644 --- a/compiler/backend-common/src/org/jetbrains/kotlin/backend/common/CodegenUtil.kt +++ b/compiler/backend-common/src/org/jetbrains/kotlin/backend/common/CodegenUtil.kt @@ -53,22 +53,16 @@ object CodegenUtil { .sortedWith(MemberComparator.INSTANCE) .keysToMapExceptNulls { delegatingMember -> val actualDelegates = DescriptorUtils.getAllOverriddenDescriptors(delegatingMember) - .mapNotNull { overriddenDescriptor -> - if (overriddenDescriptor.containingDeclaration == toInterface) { - val scope = (delegateExpressionType ?: toInterface.defaultType).memberScope - val name = overriddenDescriptor.name + .filter { it.containingDeclaration == toInterface } + .map { overriddenDescriptor -> + val scope = (delegateExpressionType ?: toInterface.defaultType).memberScope + val name = overriddenDescriptor.name - // this is the actual member of delegateExpressionType that we are delegating to - (scope.getContributedFunctions(name, NoLookupLocation.FROM_BACKEND) + - scope.getContributedVariables(name, NoLookupLocation.FROM_BACKEND)) - .firstOrNull { - (listOf(it) + DescriptorUtils.getAllOverriddenDescriptors(it)) - .map(CallableMemberDescriptor::getOriginal) - .contains(overriddenDescriptor.original) - } - } - else null - } + // this is the actual member of delegateExpressionType that we are delegating to + (scope.getContributedFunctions(name, NoLookupLocation.FROM_BACKEND) + + scope.getContributedVariables(name, NoLookupLocation.FROM_BACKEND)) + .firstOrNull { doesOverride(it, overriddenDescriptor) } + } assert(actualDelegates.size <= 1) { "Many delegates found for $delegatingMember: $actualDelegates" } @@ -76,6 +70,11 @@ object CodegenUtil { } } + private fun doesOverride(overrideCandidate: CallableMemberDescriptor, overriddenDescriptor: CallableMemberDescriptor) = + (listOf(overrideCandidate) + DescriptorUtils.getAllOverriddenDescriptors(overrideCandidate)) + .map(CallableMemberDescriptor::getOriginal) + .contains(overriddenDescriptor.original) + @JvmStatic fun getDelegatePropertyIfAny( expression: KtExpression, classDescriptor: ClassDescriptor, bindingContext: BindingContext