Fix type of callable reference to fake override

This commit is contained in:
Alexander Udalov
2015-10-14 17:29:26 +03:00
parent 9eb2e16b94
commit 2cf437c0e2
4 changed files with 49 additions and 2 deletions
@@ -205,8 +205,13 @@ private fun createReflectionTypeForCallableDescriptor(
trace: BindingTrace?,
reportOn: JetExpression?
): JetType? {
val extensionReceiver = descriptor.getExtensionReceiverParameter()
val dispatchReceiver = descriptor.getDispatchReceiverParameter()
val extensionReceiver = descriptor.extensionReceiverParameter
val dispatchReceiver = descriptor.dispatchReceiverParameter?.let { dispatchReceiver ->
// See CallableDescriptor#getOwnerForEffectiveDispatchReceiverParameter
if ((descriptor as? CallableMemberDescriptor)?.kind == CallableMemberDescriptor.Kind.FAKE_OVERRIDE)
DescriptorUtils.getDispatchReceiverParameterIfNeeded(descriptor.containingDeclaration)
else dispatchReceiver
}
if (extensionReceiver != null && dispatchReceiver != null && descriptor is CallableMemberDescriptor) {
if (reportOn != null) {