Minor. Simplify CodegenUtil.getDelegates
This commit is contained in:
@@ -53,22 +53,16 @@ object CodegenUtil {
|
|||||||
.sortedWith(MemberComparator.INSTANCE)
|
.sortedWith(MemberComparator.INSTANCE)
|
||||||
.keysToMapExceptNulls { delegatingMember ->
|
.keysToMapExceptNulls { delegatingMember ->
|
||||||
val actualDelegates = DescriptorUtils.getAllOverriddenDescriptors(delegatingMember)
|
val actualDelegates = DescriptorUtils.getAllOverriddenDescriptors(delegatingMember)
|
||||||
.mapNotNull { overriddenDescriptor ->
|
.filter { it.containingDeclaration == toInterface }
|
||||||
if (overriddenDescriptor.containingDeclaration == toInterface) {
|
.map { overriddenDescriptor ->
|
||||||
val scope = (delegateExpressionType ?: toInterface.defaultType).memberScope
|
val scope = (delegateExpressionType ?: toInterface.defaultType).memberScope
|
||||||
val name = overriddenDescriptor.name
|
val name = overriddenDescriptor.name
|
||||||
|
|
||||||
// this is the actual member of delegateExpressionType that we are delegating to
|
// this is the actual member of delegateExpressionType that we are delegating to
|
||||||
(scope.getContributedFunctions(name, NoLookupLocation.FROM_BACKEND) +
|
(scope.getContributedFunctions(name, NoLookupLocation.FROM_BACKEND) +
|
||||||
scope.getContributedVariables(name, NoLookupLocation.FROM_BACKEND))
|
scope.getContributedVariables(name, NoLookupLocation.FROM_BACKEND))
|
||||||
.firstOrNull {
|
.firstOrNull { doesOverride(it, overriddenDescriptor) }
|
||||||
(listOf(it) + DescriptorUtils.getAllOverriddenDescriptors(it))
|
}
|
||||||
.map(CallableMemberDescriptor::getOriginal)
|
|
||||||
.contains(overriddenDescriptor.original)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else null
|
|
||||||
}
|
|
||||||
|
|
||||||
assert(actualDelegates.size <= 1) { "Many delegates found for $delegatingMember: $actualDelegates" }
|
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
|
@JvmStatic
|
||||||
fun getDelegatePropertyIfAny(
|
fun getDelegatePropertyIfAny(
|
||||||
expression: KtExpression, classDescriptor: ClassDescriptor, bindingContext: BindingContext
|
expression: KtExpression, classDescriptor: ClassDescriptor, bindingContext: BindingContext
|
||||||
|
|||||||
Reference in New Issue
Block a user