From 90245659ff5c06530694c555e5ad0867164a1554 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Fri, 3 Aug 2018 16:18:06 +0300 Subject: [PATCH] Fix testOptionalParameterAndLambdaComplex (related to KT-24694) --- .../org/jetbrains/kotlin/idea/core/psiModificationUtils.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/psiModificationUtils.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/psiModificationUtils.kt index 003e1bbc101..da203086fe4 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/psiModificationUtils.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/psiModificationUtils.kt @@ -125,7 +125,8 @@ fun KtCallExpression.canMoveLambdaOutsideParentheses(): Boolean { val callee = calleeExpression if (callee is KtNameReferenceExpression) { - val lambdaArgumentCount = valueArguments.mapNotNull { it.getArgumentExpression()?.unpackFunctionLiteral() }.count() + val lambdaArgumentCount = valueArguments.count { it.getArgumentExpression()?.unpackFunctionLiteral() != null } + val referenceArgumentCount = valueArguments.count { it.getArgumentExpression() is KtCallableReferenceExpression } val bindingContext = analyze(BodyResolveMode.PARTIAL) val targets = bindingContext[BindingContext.REFERENCE_TARGET, callee]?.let { listOf(it) } ?: bindingContext[BindingContext.AMBIGUOUS_REFERENCE_TARGET, callee] @@ -134,7 +135,8 @@ fun KtCallExpression.canMoveLambdaOutsideParentheses(): Boolean { // if there are functions among candidates but none of them have last function parameter then not show the intention if (candidates.isNotEmpty() && candidates.none { candidate -> val params = candidate.valueParameters - params.lastOrNull()?.type?.isFunctionType == true && params.count { it.type.isFunctionType } == lambdaArgumentCount + params.lastOrNull()?.type?.isFunctionType == true && + params.count { it.type.isFunctionType } == lambdaArgumentCount + referenceArgumentCount } ) return false }