Fix #KT-28993

This commit is contained in:
Dmitriy Novozhilov
2019-02-01 13:20:37 +03:00
parent c60bce88c2
commit b9c5b63d69
3 changed files with 7 additions and 8 deletions
@@ -489,11 +489,10 @@ class PSICallResolver(
val resolvedTypeArguments = resolveTypeArguments(context, oldCall.typeArguments)
val argumentsInParenthesis = if (oldCall.callType != Call.CallType.ARRAY_SET_METHOD && oldCall.functionLiteralArguments.isEmpty()) {
oldCall.valueArguments
} else {
oldCall.valueArguments.dropLast(1)
}
val lambdasOutsideParenthesis = oldCall.functionLiteralArguments.size
val extraArgumentsNumber = if (oldCall.callType == Call.CallType.ARRAY_SET_METHOD) 1 else lambdasOutsideParenthesis
val argumentsInParenthesis = oldCall.valueArguments.dropLast(extraArgumentsNumber)
val externalLambdaArguments = oldCall.functionLiteralArguments
val resolvedArgumentsInParenthesis = resolveArgumentsInParenthesis(context, argumentsInParenthesis)
@@ -504,7 +503,7 @@ class PSICallResolver(
}
oldCall.valueArguments.last()
} else {
if (externalLambdaArguments.size > 2) {
if (externalLambdaArguments.size > 1) {
externalLambdaArguments.drop(1).mapNotNull { it.getLambdaExpression() }.forEach {
context.trace.report(Errors.MANY_LAMBDA_EXPRESSION_ARGUMENTS.on(it))
}
@@ -25,5 +25,5 @@ fun test() {
foo(<!TYPE_MISMATCH!>""<!>, <!CONSTANT_EXPECTED_TYPE_MISMATCH!>1<!>) <!TOO_MANY_ARGUMENTS!>{}<!>
foo(<!TYPE_MISMATCH!>""<!>, <!CONSTANT_EXPECTED_TYPE_MISMATCH!>1<!>) <!NI;TOO_MANY_ARGUMENTS, TOO_MANY_ARGUMENTS!>{}<!> <!OI;MANY_LAMBDA_EXPRESSION_ARGUMENTS!>{}<!>
foo(<!TYPE_MISMATCH!>""<!>, <!CONSTANT_EXPECTED_TYPE_MISMATCH!>1<!>) <!TOO_MANY_ARGUMENTS!>{}<!> <!MANY_LAMBDA_EXPRESSION_ARGUMENTS!>{}<!>
}
@@ -6,7 +6,7 @@ fun test(x: () -> Unit, y: () -> Unit) {
}
fun main() {
<!OI;NO_VALUE_FOR_PARAMETER!>test<!> {
<!NO_VALUE_FOR_PARAMETER!>test<!> {
1
} <!MANY_LAMBDA_EXPRESSION_ARGUMENTS!>{
2