J2K: If last expression in Method Call is Lambda add it outside the parenthesis

This commit is contained in:
Natalia Ukhorskaya
2015-07-29 15:08:09 +03:00
parent 40d2fd7994
commit ad6611b930
10 changed files with 48 additions and 45 deletions
@@ -59,4 +59,8 @@ public class MoveLambdaOutsideParenthesesIntention : JetSelfTargetingIntention<J
override fun applyTo(element: JetCallExpression, editor: Editor) {
element.moveFunctionLiteralOutsideParentheses()
}
fun applyTo(element: JetCallExpression) {
element.moveFunctionLiteralOutsideParentheses()
}
}
@@ -26,10 +26,7 @@ import org.jetbrains.kotlin.diagnostics.Diagnostic
import org.jetbrains.kotlin.diagnostics.Errors
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
import org.jetbrains.kotlin.idea.caches.resolve.resolveImportReference
import org.jetbrains.kotlin.idea.intentions.ConvertToStringTemplateIntention
import org.jetbrains.kotlin.idea.intentions.IfNullToElvisIntention
import org.jetbrains.kotlin.idea.intentions.RemoveExplicitTypeArgumentsIntention
import org.jetbrains.kotlin.idea.intentions.SimplifyNegatedBinaryExpressionIntention
import org.jetbrains.kotlin.idea.intentions.*
import org.jetbrains.kotlin.idea.intentions.branchedTransformations.intentions.IfThenToElvisIntention
import org.jetbrains.kotlin.idea.intentions.branchedTransformations.intentions.IfThenToSafeAccessIntention
import org.jetbrains.kotlin.idea.quickfix.RemoveModifierFix
@@ -172,6 +169,18 @@ public class J2kPostProcessor(private val formatCode: Boolean) : PostProcessor {
super.visitBinaryExpression(expression)
}
}
override fun visitCallExpression(expression: JetCallExpression) {
super.visitCallExpression(expression)
val literalArgument = expression.valueArguments.lastOrNull()?.getArgumentExpression()?.unpackFunctionLiteral()
if (literalArgument != null) {
val intention = MoveLambdaOutsideParenthesesIntention()
if (intention.isApplicableTo(expression, literalArgument.textOffset)) {
intention.applyTo(expression)
}
}
}
})
for (typeArgs in redundantTypeArgs) {