diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolver.java index bed5e619a86..cc20d2cfef8 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolver.java @@ -416,7 +416,7 @@ public class CallResolver { checkTypesWithNoCallee(context.toBasic()); return; } - checkUnknownArgumentTypes(context.toBasic(), unmappedArguments); + checkUnmappedArgumentTypes(context.toBasic(), unmappedArguments); } List jetTypeArguments = context.call.getTypeArguments(); @@ -612,8 +612,8 @@ public class CallResolver { } } - private void checkUnknownArgumentTypes(BasicResolutionContext context, Set unknownArguments) { - for (ValueArgument valueArgument : unknownArguments) { + private void checkUnmappedArgumentTypes(BasicResolutionContext context, Set unmappedArguments) { + for (ValueArgument valueArgument : unmappedArguments) { JetExpression argumentExpression = valueArgument.getArgumentExpression(); if (argumentExpression != null) { expressionTypingServices.getType(context.scope, argumentExpression, NO_EXPECTED_TYPE, context.trace); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ValueArgumentsToParametersMapper.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ValueArgumentsToParametersMapper.java index 105ec16e5f2..4dc09f10d31 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ValueArgumentsToParametersMapper.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ValueArgumentsToParametersMapper.java @@ -101,7 +101,7 @@ import static org.jetbrains.jet.lang.resolve.calls.ValueArgumentsToParametersMap if (valueParameterDescriptor == null) { temporaryTrace.report(NAMED_PARAMETER_NOT_FOUND.on(nameReference)); unmappedArguments.add(valueArgument); - status = ERROR; + status = WEAK_ERROR; } else { temporaryTrace.record(REFERENCE_TARGET, nameReference, valueParameterDescriptor); @@ -116,14 +116,14 @@ import static org.jetbrains.jet.lang.resolve.calls.ValueArgumentsToParametersMap } if (somePositioned) { temporaryTrace.report(MIXING_NAMED_AND_POSITIONED_ARGUMENTS.on(nameReference)); - status = ERROR; + status = WEAK_ERROR; } } else { somePositioned = true; if (someNamed) { temporaryTrace.report(MIXING_NAMED_AND_POSITIONED_ARGUMENTS.on(valueArgument.asElement())); - status = ERROR; + status = WEAK_ERROR; } else { int parameterCount = valueParameters.size(); @@ -147,7 +147,7 @@ import static org.jetbrains.jet.lang.resolve.calls.ValueArgumentsToParametersMap else { temporaryTrace.report(TOO_MANY_ARGUMENTS.on(valueArgument.asElement(), candidate)); unmappedArguments.add(valueArgument); - status = WEAK_ERROR; + status = ERROR; } } } @@ -179,7 +179,7 @@ import static org.jetbrains.jet.lang.resolve.calls.ValueArgumentsToParametersMap else { if (!usedParameters.add(valueParameterDescriptor)) { temporaryTrace.report(TOO_MANY_ARGUMENTS.on(possiblyLabeledFunctionLiteral, candidate)); - status = ERROR; + status = WEAK_ERROR; } else { status = status.compose(put(candidateCall, valueParameterDescriptor, CallMaker.makeValueArgument(functionLiteral), varargs)); @@ -190,7 +190,7 @@ import static org.jetbrains.jet.lang.resolve.calls.ValueArgumentsToParametersMap for (int i = 1; i < functionLiteralArguments.size(); i++) { JetExpression argument = functionLiteralArguments.get(i); temporaryTrace.report(MANY_FUNCTION_LITERAL_ARGUMENTS.on(argument)); - status = ERROR; + status = WEAK_ERROR; } } diff --git a/compiler/testData/diagnostics/tests/checkArguments/kt1897_diagnostic_part.jet b/compiler/testData/diagnostics/tests/checkArguments/kt1897_diagnostic_part.jet index e5d1371119a..b5f67ee5ab8 100644 --- a/compiler/testData/diagnostics/tests/checkArguments/kt1897_diagnostic_part.jet +++ b/compiler/testData/diagnostics/tests/checkArguments/kt1897_diagnostic_part.jet @@ -1,8 +1,28 @@ +//KT-1897 When call cannot be resolved to any function, save information about types of arguments + package a -fun foo(i: Int, s: String) { -} +fun bar() {} + +fun foo(i: Int, s: String) {} fun test() { + + bar(xx) + + bar { } + foo("", 1, xx) + + foo(r = xx, i = "", s = "") + + foo(i = 1, i = 1, s = 11) + + foo("", s = 2) + + foo(i = "", s = 2, 33) + + foo("", 1) {} + + foo("", 1) {} {} } \ No newline at end of file