From b1bff24cdeb5773651b6887ba3ea58f875a74143 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Thu, 18 Jan 2018 17:50:41 +0300 Subject: [PATCH] Move lambda inside: protect from KNPE in getLambdaExpression So EA-114888 Fixed --- .../intentions/MoveLambdaInsideParenthesesIntention.kt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/MoveLambdaInsideParenthesesIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/MoveLambdaInsideParenthesesIntention.kt index b32cc8b83be..4038ed90fce 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/MoveLambdaInsideParenthesesIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/MoveLambdaInsideParenthesesIntention.kt @@ -22,10 +22,13 @@ import org.jetbrains.kotlin.idea.caches.resolve.analyze import org.jetbrains.kotlin.idea.core.moveInsideParentheses import org.jetbrains.kotlin.psi.KtLambdaArgument import org.jetbrains.kotlin.psi.psiUtil.containsInside +import org.jetbrains.kotlin.psi.unpackFunctionLiteral -class MoveLambdaInsideParenthesesIntention : SelfTargetingIntention(KtLambdaArgument::class.java, "Move lambda argument into parentheses"), LowPriorityAction { +class MoveLambdaInsideParenthesesIntention : SelfTargetingIntention( + KtLambdaArgument::class.java, "Move lambda argument into parentheses" +), LowPriorityAction { override fun isApplicableTo(element: KtLambdaArgument, caretOffset: Int): Boolean { - val body = element.getLambdaExpression().bodyExpression ?: return true + val body = element.getArgumentExpression().unpackFunctionLiteral()?.bodyExpression ?: return true return !body.textRange.containsInside(caretOffset) }