From 5a8e80399e9d3c5025fb73e6d9415c85cc8a77f1 Mon Sep 17 00:00:00 2001 From: Svetlana Isakova Date: Sun, 1 Sep 2013 20:35:24 +0400 Subject: [PATCH] update number types for unmapped arguments or when there is no candidate found --- .../lang/resolve/calls/ArgumentTypeResolver.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ArgumentTypeResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ArgumentTypeResolver.java index 3787916f961..5e6132e002e 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ArgumentTypeResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ArgumentTypeResolver.java @@ -92,7 +92,7 @@ public class ArgumentTypeResolver { for (ValueArgument valueArgument : context.call.getValueArguments()) { JetExpression argumentExpression = valueArgument.getArgumentExpression(); if (argumentExpression != null && !(argumentExpression instanceof JetFunctionLiteralExpression)) { - expressionTypingServices.getType(context.scope, argumentExpression, NO_EXPECTED_TYPE, context.dataFlowInfo, context.trace); + checkArgumentType(context, argumentExpression); } } @@ -117,12 +117,12 @@ public class ArgumentTypeResolver { for (ValueArgument valueArgument : context.call.getValueArguments()) { JetExpression argumentExpression = valueArgument.getArgumentExpression(); if (argumentExpression != null && (argumentExpression instanceof JetFunctionLiteralExpression)) { - expressionTypingServices.getType(context.scope, argumentExpression, NO_EXPECTED_TYPE, context.dataFlowInfo, context.trace); + checkArgumentType(context, argumentExpression); } } for (JetExpression expression : context.call.getFunctionLiteralArguments()) { - expressionTypingServices.getType(context.scope, expression, NO_EXPECTED_TYPE, context.dataFlowInfo, context.trace); + checkArgumentType(context, expression); } } @@ -130,11 +130,16 @@ public class ArgumentTypeResolver { for (ValueArgument valueArgument : unmappedArguments) { JetExpression argumentExpression = valueArgument.getArgumentExpression(); if (argumentExpression != null) { - expressionTypingServices.getType(context.scope, argumentExpression, NO_EXPECTED_TYPE, context.dataFlowInfo, context.trace); + checkArgumentType(context, argumentExpression); } } } + private void checkArgumentType(CallResolutionContext context, JetExpression argumentExpression) { + expressionTypingServices.getType(context.scope, argumentExpression, NO_EXPECTED_TYPE, context.dataFlowInfo, context.trace); + updateResultArgumentTypeIfNotDenotable(context, argumentExpression); + } + public void checkTypesForFunctionArguments(CallResolutionContext context, ResolvedCallImpl resolvedCall) { Map arguments = resolvedCall.getValueArguments(); for (Map.Entry entry : arguments.entrySet()) {