From a303888e669de1a80909f1529260174951185eda Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Tue, 6 Jun 2017 17:56:52 +0300 Subject: [PATCH] [NI] Fix expected return type for function literals It should actually be Unit, as told in FunctionExpression comments (was null, later defaulted to Any?). --- .../jetbrains/kotlin/resolve/calls/tower/PSICallResolver.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/PSICallResolver.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/PSICallResolver.kt index 204cd438b6c..6f6a0af5915 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/PSICallResolver.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/PSICallResolver.kt @@ -447,7 +447,8 @@ class PSICallResolver( startDataFlowInfo: DataFlowInfo, valueArgument: ValueArgument ): PSIKotlinCallArgument { - val parseErrorArgument = ParseErrorKotlinCallArgument(valueArgument, startDataFlowInfo, outerCallContext.scope.ownerDescriptor.builtIns) + val builtIns = outerCallContext.scope.ownerDescriptor.builtIns + val parseErrorArgument = ParseErrorKotlinCallArgument(valueArgument, startDataFlowInfo, builtIns) val ktExpression = KtPsiUtil.deparenthesize(valueArgument.getArgumentExpression()) ?: return parseErrorArgument @@ -460,7 +461,8 @@ class PSICallResolver( is KtNamedFunction -> { val receiverType = resolveType(outerCallContext, ktExpression.receiverTypeReference) val parametersTypes = resolveParametersTypes(outerCallContext, ktExpression) ?: emptyArray() - val returnType = resolveType(outerCallContext, ktExpression.typeReference) + val returnType = resolveType(outerCallContext, ktExpression.typeReference) ?: + if (ktExpression.hasBlockBody()) builtIns.unitType else null FunctionExpressionImpl(outerCallContext, valueArgument, startDataFlowInfo, ktExpression, argumentName, receiverType, parametersTypes, returnType) } else -> null