From 2275a4cb77aa054ccebf43e4448b1c516bbdb0ac Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Mon, 3 Aug 2015 18:36:42 +0300 Subject: [PATCH] assert: CallResolverUtilPackage$CallResolverUtil$eba.hasUnknownReturnType - ignore expressions with non-callable expected type resolved as callable reference expressions (this can happen when we have incorrect code) --- .../jetbrains/kotlin/resolve/calls/GenericCandidateResolver.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/GenericCandidateResolver.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/GenericCandidateResolver.kt index ad57ec8d6c0..4b7d1b959b6 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/GenericCandidateResolver.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/GenericCandidateResolver.kt @@ -17,6 +17,7 @@ package org.jetbrains.kotlin.resolve.calls import org.jetbrains.kotlin.builtins.KotlinBuiltIns +import org.jetbrains.kotlin.builtins.ReflectionTypes import org.jetbrains.kotlin.descriptors.CallableDescriptor import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor import org.jetbrains.kotlin.psi.* @@ -279,6 +280,7 @@ class GenericCandidateResolver( val effectiveExpectedType = getEffectiveExpectedType(valueParameterDescriptor, valueArgument) val expectedType = getExpectedTypeForCallableReference(callableReference, constraintSystem, context, effectiveExpectedType) ?: return + if (!ReflectionTypes.isCallableType(expectedType)) return val resolvedType = getResolvedTypeForCallableReference(callableReference, context, expectedType, valueArgument) val position = VALUE_PARAMETER_POSITION.position(valueParameterDescriptor.getIndex()) constraintSystem.addSubtypeConstraint(resolvedType, effectiveExpectedType, position)