From decf9939fe28a85c1253c03179ccb5dcdb9caf29 Mon Sep 17 00:00:00 2001 From: kenji tomita Date: Fri, 6 Apr 2018 15:37:36 +0300 Subject: [PATCH] MoveLambdaOutsideParentheses: intention -> inspection #KT-21413 Fixed --- .../kotlin/idea/core/psiModificationUtils.kt | 7 ++ .../MoveLambdaOutsideParentheses.html | 5 + .../after.kt.template | 3 - .../before.kt.template | 3 - .../description.html | 5 - idea/src/META-INF/plugin.xml | 14 ++- .../MoveLambdaOutsideParenthesesInspection.kt | 38 ++++++ .../AnonymousFunctionToLambdaIntention.kt | 7 +- ...unctionTypeParameterToReceiverIntention.kt | 4 +- .../ConvertReferenceToLambdaIntention.kt | 10 +- .../MoveLambdaOutsideParenthesesIntention.kt | 54 -------- .../kotlin/idea/j2k/J2kPostProcessings.kt | 16 +-- .../moveLambdaOutsideParentheses/.inspection | 1 + .../ambigousOverload.kt | 0 .../ambigousOverload.kt.after | 0 .../functionalValueCall.kt | 0 .../functionalValueCall.kt.after | 0 .../inapplicable1.kt | 2 +- .../inapplicable2.kt | 3 +- .../inapplicable3.kt | 3 +- .../inapplicableAlreadyHasFunctionLiteral.kt | 2 +- .../inapplicableOptionalParametersAfter.kt | 2 +- .../labeledLambda.kt | 0 .../labeledLambda.kt.after | 0 .../lambdaWithCommas.kt | 0 .../lambdaWithCommas.kt.after | 0 .../lambdaWithCommas2.kt | 0 .../lambdaWithCommas2.kt.after | 0 .../lambdaWithCommas3.kt | 0 .../lambdaWithCommas3.kt.after | 0 .../moveLambda1.kt | 0 .../moveLambda1.kt.after | 0 .../moveLambda2.kt | 0 .../moveLambda2.kt.after | 0 .../moveLambda3.kt | 0 .../moveLambda3.kt.after | 0 .../moveLambda4.kt | 2 +- .../moveLambda4.kt.after | 0 .../moveLambda5.kt | 0 .../moveLambda5.kt.after | 0 .../moveLambda6.kt | 2 +- .../moveLambda6.kt.after | 0 .../noTwoConsequentLambdas.kt | 0 .../noTwoConsequentLambdas.kt.after | 0 .../moveLambdaOutsideParentheses/.intention | 1 - .../LocalInspectionTestGenerated.java | 117 ++++++++++++++++++ .../intentions/IntentionTestGenerated.java | 117 ------------------ 47 files changed, 193 insertions(+), 225 deletions(-) create mode 100644 idea/resources/inspectionDescriptions/MoveLambdaOutsideParentheses.html delete mode 100644 idea/resources/intentionDescriptions/MoveLambdaOutsideParenthesesIntention/after.kt.template delete mode 100644 idea/resources/intentionDescriptions/MoveLambdaOutsideParenthesesIntention/before.kt.template delete mode 100644 idea/resources/intentionDescriptions/MoveLambdaOutsideParenthesesIntention/description.html create mode 100644 idea/src/org/jetbrains/kotlin/idea/inspections/MoveLambdaOutsideParenthesesInspection.kt delete mode 100644 idea/src/org/jetbrains/kotlin/idea/intentions/MoveLambdaOutsideParenthesesIntention.kt create mode 100644 idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/.inspection rename idea/testData/{intentions => inspectionsLocal}/moveLambdaOutsideParentheses/ambigousOverload.kt (100%) rename idea/testData/{intentions => inspectionsLocal}/moveLambdaOutsideParentheses/ambigousOverload.kt.after (100%) rename idea/testData/{intentions => inspectionsLocal}/moveLambdaOutsideParentheses/functionalValueCall.kt (100%) rename idea/testData/{intentions => inspectionsLocal}/moveLambdaOutsideParentheses/functionalValueCall.kt.after (100%) rename idea/testData/{intentions => inspectionsLocal}/moveLambdaOutsideParentheses/inapplicable1.kt (76%) rename idea/testData/{intentions => inspectionsLocal}/moveLambdaOutsideParentheses/inapplicable2.kt (80%) rename idea/testData/{intentions => inspectionsLocal}/moveLambdaOutsideParentheses/inapplicable3.kt (84%) rename idea/testData/{intentions => inspectionsLocal}/moveLambdaOutsideParentheses/inapplicableAlreadyHasFunctionLiteral.kt (79%) rename idea/testData/{intentions => inspectionsLocal}/moveLambdaOutsideParentheses/inapplicableOptionalParametersAfter.kt (77%) rename idea/testData/{intentions => inspectionsLocal}/moveLambdaOutsideParentheses/labeledLambda.kt (100%) rename idea/testData/{intentions => inspectionsLocal}/moveLambdaOutsideParentheses/labeledLambda.kt.after (100%) rename idea/testData/{intentions => inspectionsLocal}/moveLambdaOutsideParentheses/lambdaWithCommas.kt (100%) rename idea/testData/{intentions => inspectionsLocal}/moveLambdaOutsideParentheses/lambdaWithCommas.kt.after (100%) rename idea/testData/{intentions => inspectionsLocal}/moveLambdaOutsideParentheses/lambdaWithCommas2.kt (100%) rename idea/testData/{intentions => inspectionsLocal}/moveLambdaOutsideParentheses/lambdaWithCommas2.kt.after (100%) rename idea/testData/{intentions => inspectionsLocal}/moveLambdaOutsideParentheses/lambdaWithCommas3.kt (100%) rename idea/testData/{intentions => inspectionsLocal}/moveLambdaOutsideParentheses/lambdaWithCommas3.kt.after (100%) rename idea/testData/{intentions => inspectionsLocal}/moveLambdaOutsideParentheses/moveLambda1.kt (100%) rename idea/testData/{intentions => inspectionsLocal}/moveLambdaOutsideParentheses/moveLambda1.kt.after (100%) rename idea/testData/{intentions => inspectionsLocal}/moveLambdaOutsideParentheses/moveLambda2.kt (100%) rename idea/testData/{intentions => inspectionsLocal}/moveLambdaOutsideParentheses/moveLambda2.kt.after (100%) rename idea/testData/{intentions => inspectionsLocal}/moveLambdaOutsideParentheses/moveLambda3.kt (100%) rename idea/testData/{intentions => inspectionsLocal}/moveLambdaOutsideParentheses/moveLambda3.kt.after (100%) rename idea/testData/{intentions => inspectionsLocal}/moveLambdaOutsideParentheses/moveLambda4.kt (90%) rename idea/testData/{intentions => inspectionsLocal}/moveLambdaOutsideParentheses/moveLambda4.kt.after (100%) rename idea/testData/{intentions => inspectionsLocal}/moveLambdaOutsideParentheses/moveLambda5.kt (100%) rename idea/testData/{intentions => inspectionsLocal}/moveLambdaOutsideParentheses/moveLambda5.kt.after (100%) rename idea/testData/{intentions => inspectionsLocal}/moveLambdaOutsideParentheses/moveLambda6.kt (82%) rename idea/testData/{intentions => inspectionsLocal}/moveLambdaOutsideParentheses/moveLambda6.kt.after (100%) rename idea/testData/{intentions => inspectionsLocal}/moveLambdaOutsideParentheses/noTwoConsequentLambdas.kt (100%) rename idea/testData/{intentions => inspectionsLocal}/moveLambdaOutsideParentheses/noTwoConsequentLambdas.kt.after (100%) delete mode 100644 idea/testData/intentions/moveLambdaOutsideParentheses/.intention 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 c362800a948..ba4bbd016a7 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 @@ -108,6 +108,13 @@ fun KtLambdaArgument.moveInsideParenthesesAndReplaceWith( return oldCallExpression.replace(newCallExpression) as KtCallExpression } +fun KtLambdaExpression.moveFunctionLiteralOutsideParenthesesIfPossible() { + val call = ((parent as? KtValueArgument)?.parent as? KtValueArgumentList)?.parent as? KtCallExpression ?: return + if (call.canMoveLambdaOutsideParentheses()) { + call.moveFunctionLiteralOutsideParentheses() + } +} + private fun shouldLambdaParameterBeNamed(args: List, callExpr: KtCallExpression): Boolean { if (args.any { it.isNamed() }) return true val calee = (callExpr.calleeExpression?.mainReference?.resolve() as? KtFunction) ?: return true diff --git a/idea/resources/inspectionDescriptions/MoveLambdaOutsideParentheses.html b/idea/resources/inspectionDescriptions/MoveLambdaOutsideParentheses.html new file mode 100644 index 00000000000..cfc7f98b115 --- /dev/null +++ b/idea/resources/inspectionDescriptions/MoveLambdaOutsideParentheses.html @@ -0,0 +1,5 @@ + + +This inspection detects a lambda expression inside parentheses which can be moved outside of them. + + \ No newline at end of file diff --git a/idea/resources/intentionDescriptions/MoveLambdaOutsideParenthesesIntention/after.kt.template b/idea/resources/intentionDescriptions/MoveLambdaOutsideParenthesesIntention/after.kt.template deleted file mode 100644 index faedcfcb4d4..00000000000 --- a/idea/resources/intentionDescriptions/MoveLambdaOutsideParenthesesIntention/after.kt.template +++ /dev/null @@ -1,3 +0,0 @@ -fun foo() { - bar(2) { it * 3 } -} \ No newline at end of file diff --git a/idea/resources/intentionDescriptions/MoveLambdaOutsideParenthesesIntention/before.kt.template b/idea/resources/intentionDescriptions/MoveLambdaOutsideParenthesesIntention/before.kt.template deleted file mode 100644 index 15506d7509b..00000000000 --- a/idea/resources/intentionDescriptions/MoveLambdaOutsideParenthesesIntention/before.kt.template +++ /dev/null @@ -1,3 +0,0 @@ -fun foo() { - bar(2, { it * 3 }) -} \ No newline at end of file diff --git a/idea/resources/intentionDescriptions/MoveLambdaOutsideParenthesesIntention/description.html b/idea/resources/intentionDescriptions/MoveLambdaOutsideParenthesesIntention/description.html deleted file mode 100644 index 28727ca0d29..00000000000 --- a/idea/resources/intentionDescriptions/MoveLambdaOutsideParenthesesIntention/description.html +++ /dev/null @@ -1,5 +0,0 @@ - - -This intention moves a lambda expression outside parentheses. - - \ No newline at end of file diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml index cf0e224b50f..fe6a030b59b 100644 --- a/idea/src/META-INF/plugin.xml +++ b/idea/src/META-INF/plugin.xml @@ -973,11 +973,6 @@ Kotlin - - org.jetbrains.kotlin.idea.intentions.MoveLambdaOutsideParenthesesIntention - Kotlin - - org.jetbrains.kotlin.idea.intentions.declarations.SplitPropertyDeclarationIntention Kotlin @@ -2774,6 +2769,15 @@ language="kotlin" /> + + diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/MoveLambdaOutsideParenthesesInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/MoveLambdaOutsideParenthesesInspection.kt new file mode 100644 index 00000000000..1685c47a92a --- /dev/null +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/MoveLambdaOutsideParenthesesInspection.kt @@ -0,0 +1,38 @@ +/* + * Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.idea.inspections + +import com.intellij.openapi.editor.Editor +import com.intellij.openapi.project.Project +import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.idea.core.canMoveLambdaOutsideParentheses +import org.jetbrains.kotlin.idea.core.getLastLambdaExpression +import org.jetbrains.kotlin.idea.core.moveFunctionLiteralOutsideParentheses +import org.jetbrains.kotlin.psi.* +import org.jetbrains.kotlin.psi.psiUtil.getParentOfType +import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType + +class MoveLambdaOutsideParenthesesInspection : AbstractApplicabilityBasedInspection( + KtCallExpression::class.java +) { + override fun isApplicable(element: KtCallExpression) = element.canMoveLambdaOutsideParentheses() + + override fun applyTo(element: PsiElement, project: Project, editor: Editor?) { + val expression = element.getParentOfType(strict = false) ?: return + + if (expression.canMoveLambdaOutsideParentheses()) { + expression.moveFunctionLiteralOutsideParentheses() + } + } + + override fun inspectionText(element: KtCallExpression) = "Should be moved lambda argument out of parentheses" + + override fun inspectionTarget(element: KtCallExpression): KtElement { + return element.getLastLambdaExpression()?.getStrictParentOfType()?.asElement() ?: element + } + + override val defaultFixText = "Move lambda argument out of parentheses" +} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/AnonymousFunctionToLambdaIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/AnonymousFunctionToLambdaIntention.kt index f30c5fb7976..4c98b54f2ce 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/AnonymousFunctionToLambdaIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/AnonymousFunctionToLambdaIntention.kt @@ -20,6 +20,8 @@ import com.intellij.openapi.editor.Editor import com.intellij.openapi.util.TextRange import com.intellij.psi.search.LocalSearchScope import com.intellij.psi.search.searches.ReferencesSearch +import org.jetbrains.kotlin.idea.core.getLastLambdaExpression +import org.jetbrains.kotlin.idea.core.moveFunctionLiteralOutsideParenthesesIfPossible import org.jetbrains.kotlin.idea.core.replaced import org.jetbrains.kotlin.idea.util.CommentSaver import org.jetbrains.kotlin.psi.* @@ -89,9 +91,6 @@ class AnonymousFunctionToLambdaIntention : SelfTargetingRangeIntention(KtCallExpression::class.java, "Move lambda argument out of parentheses") { - companion object { - fun moveFunctionLiteralOutsideParenthesesIfPossible(expression: KtLambdaExpression) { - val call = ((expression.parent as? KtValueArgument)?.parent as? KtValueArgumentList)?.parent as? KtCallExpression ?: return - if (call.canMoveLambdaOutsideParentheses()) { - call.moveFunctionLiteralOutsideParentheses() - } - } - } - - override fun isApplicableTo(element: KtCallExpression, caretOffset: Int): Boolean { - if (!element.canMoveLambdaOutsideParentheses()) return false - - val lambdaExpression = element.getLastLambdaExpression() ?: return false - val argument = lambdaExpression.getStrictParentOfType() ?: return false - if (caretOffset < argument.startOffset) return false - val bodyRange = lambdaExpression.bodyExpression?.textRange ?: return true - return !bodyRange.containsInside(caretOffset) - } - - override fun applyTo(element: KtCallExpression, editor: Editor?) { - element.moveFunctionLiteralOutsideParentheses() - } -} diff --git a/idea/src/org/jetbrains/kotlin/idea/j2k/J2kPostProcessings.kt b/idea/src/org/jetbrains/kotlin/idea/j2k/J2kPostProcessings.kt index 8e119edda23..d5d8394332f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/j2k/J2kPostProcessings.kt +++ b/idea/src/org/jetbrains/kotlin/idea/j2k/J2kPostProcessings.kt @@ -24,6 +24,7 @@ import org.jetbrains.kotlin.diagnostics.Diagnostic import org.jetbrains.kotlin.diagnostics.DiagnosticFactory import org.jetbrains.kotlin.diagnostics.Errors import org.jetbrains.kotlin.idea.caches.resolve.analyze +import org.jetbrains.kotlin.idea.core.moveFunctionLiteralOutsideParenthesesIfPossible import org.jetbrains.kotlin.idea.core.replaced import org.jetbrains.kotlin.idea.core.setVisibility import org.jetbrains.kotlin.idea.inspections.* @@ -69,7 +70,7 @@ object J2KPostProcessingRegistrar { init { _processings.add(RemoveExplicitTypeArgumentsProcessing()) _processings.add(RemoveRedundantOverrideVisibilityProcessing()) - _processings.add(MoveLambdaOutsideParenthesesProcessing()) + registerInspectionBasedProcessing(MoveLambdaOutsideParenthesesInspection()) _processings.add(FixObjectStringConcatenationProcessing()) _processings.add(ConvertToStringTemplateProcessing()) _processings.add(UsePropertyAccessSyntaxProcessing()) @@ -243,19 +244,6 @@ object J2KPostProcessingRegistrar { } } - private class MoveLambdaOutsideParenthesesProcessing : J2kPostProcessing { - override val writeActionNeeded = true - - private val intention = MoveLambdaOutsideParenthesesIntention() - - override fun createAction(element: KtElement, diagnostics: Diagnostics): (() -> Unit)? { - if (element !is KtCallExpression) return null - val literalArgument = element.valueArguments.lastOrNull()?.getArgumentExpression()?.unpackFunctionLiteral() ?: return null - if (!intention.isApplicableTo(element, literalArgument.textOffset)) return null - return { intention.applyTo(element, null) } - } - } - private class ConvertToStringTemplateProcessing : J2kPostProcessing { override val writeActionNeeded = true diff --git a/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/.inspection b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/.inspection new file mode 100644 index 00000000000..b044b093c31 --- /dev/null +++ b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/.inspection @@ -0,0 +1 @@ +org.jetbrains.kotlin.idea.inspections.MoveLambdaOutsideParenthesesInspection diff --git a/idea/testData/intentions/moveLambdaOutsideParentheses/ambigousOverload.kt b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/ambigousOverload.kt similarity index 100% rename from idea/testData/intentions/moveLambdaOutsideParentheses/ambigousOverload.kt rename to idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/ambigousOverload.kt diff --git a/idea/testData/intentions/moveLambdaOutsideParentheses/ambigousOverload.kt.after b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/ambigousOverload.kt.after similarity index 100% rename from idea/testData/intentions/moveLambdaOutsideParentheses/ambigousOverload.kt.after rename to idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/ambigousOverload.kt.after diff --git a/idea/testData/intentions/moveLambdaOutsideParentheses/functionalValueCall.kt b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/functionalValueCall.kt similarity index 100% rename from idea/testData/intentions/moveLambdaOutsideParentheses/functionalValueCall.kt rename to idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/functionalValueCall.kt diff --git a/idea/testData/intentions/moveLambdaOutsideParentheses/functionalValueCall.kt.after b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/functionalValueCall.kt.after similarity index 100% rename from idea/testData/intentions/moveLambdaOutsideParentheses/functionalValueCall.kt.after rename to idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/functionalValueCall.kt.after diff --git a/idea/testData/intentions/moveLambdaOutsideParentheses/inapplicable1.kt b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/inapplicable1.kt similarity index 76% rename from idea/testData/intentions/moveLambdaOutsideParentheses/inapplicable1.kt rename to idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/inapplicable1.kt index c34d970eac1..a1fd5406c5f 100644 --- a/idea/testData/intentions/moveLambdaOutsideParentheses/inapplicable1.kt +++ b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/inapplicable1.kt @@ -1,4 +1,4 @@ -// IS_APPLICABLE: false +// PROBLEM: none fun foo() { bar() { it } } diff --git a/idea/testData/intentions/moveLambdaOutsideParentheses/inapplicable2.kt b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/inapplicable2.kt similarity index 80% rename from idea/testData/intentions/moveLambdaOutsideParentheses/inapplicable2.kt rename to idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/inapplicable2.kt index 9f9656fee28..bbc4a8640c8 100644 --- a/idea/testData/intentions/moveLambdaOutsideParentheses/inapplicable2.kt +++ b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/inapplicable2.kt @@ -1,5 +1,4 @@ -// IS_APPLICABLE: false - +// PROBLEM: none fun doSomething(a: T) {} fun foo(x: Int) { diff --git a/idea/testData/intentions/moveLambdaOutsideParentheses/inapplicable3.kt b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/inapplicable3.kt similarity index 84% rename from idea/testData/intentions/moveLambdaOutsideParentheses/inapplicable3.kt rename to idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/inapplicable3.kt index 8f4cf08e1ca..86f59da9f0b 100644 --- a/idea/testData/intentions/moveLambdaOutsideParentheses/inapplicable3.kt +++ b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/inapplicable3.kt @@ -1,5 +1,4 @@ -// IS_APPLICABLE: false - +// PROBLEM: none fun doSomething(a: T) {} fun foo(x: Int) { diff --git a/idea/testData/intentions/moveLambdaOutsideParentheses/inapplicableAlreadyHasFunctionLiteral.kt b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/inapplicableAlreadyHasFunctionLiteral.kt similarity index 79% rename from idea/testData/intentions/moveLambdaOutsideParentheses/inapplicableAlreadyHasFunctionLiteral.kt rename to idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/inapplicableAlreadyHasFunctionLiteral.kt index ecf6245bccd..964c95ee576 100644 --- a/idea/testData/intentions/moveLambdaOutsideParentheses/inapplicableAlreadyHasFunctionLiteral.kt +++ b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/inapplicableAlreadyHasFunctionLiteral.kt @@ -1,4 +1,4 @@ -// IS_APPLICABLE: false +// PROBLEM: none fun foo() { bar({ it }) {it} } diff --git a/idea/testData/intentions/moveLambdaOutsideParentheses/inapplicableOptionalParametersAfter.kt b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/inapplicableOptionalParametersAfter.kt similarity index 77% rename from idea/testData/intentions/moveLambdaOutsideParentheses/inapplicableOptionalParametersAfter.kt rename to idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/inapplicableOptionalParametersAfter.kt index e1d6fa8b422..a18de8beb2a 100644 --- a/idea/testData/intentions/moveLambdaOutsideParentheses/inapplicableOptionalParametersAfter.kt +++ b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/inapplicableOptionalParametersAfter.kt @@ -1,4 +1,4 @@ -// IS_APPLICABLE: false +// PROBLEM: none fun foo() { bar({ it }) } diff --git a/idea/testData/intentions/moveLambdaOutsideParentheses/labeledLambda.kt b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/labeledLambda.kt similarity index 100% rename from idea/testData/intentions/moveLambdaOutsideParentheses/labeledLambda.kt rename to idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/labeledLambda.kt diff --git a/idea/testData/intentions/moveLambdaOutsideParentheses/labeledLambda.kt.after b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/labeledLambda.kt.after similarity index 100% rename from idea/testData/intentions/moveLambdaOutsideParentheses/labeledLambda.kt.after rename to idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/labeledLambda.kt.after diff --git a/idea/testData/intentions/moveLambdaOutsideParentheses/lambdaWithCommas.kt b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/lambdaWithCommas.kt similarity index 100% rename from idea/testData/intentions/moveLambdaOutsideParentheses/lambdaWithCommas.kt rename to idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/lambdaWithCommas.kt diff --git a/idea/testData/intentions/moveLambdaOutsideParentheses/lambdaWithCommas.kt.after b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/lambdaWithCommas.kt.after similarity index 100% rename from idea/testData/intentions/moveLambdaOutsideParentheses/lambdaWithCommas.kt.after rename to idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/lambdaWithCommas.kt.after diff --git a/idea/testData/intentions/moveLambdaOutsideParentheses/lambdaWithCommas2.kt b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/lambdaWithCommas2.kt similarity index 100% rename from idea/testData/intentions/moveLambdaOutsideParentheses/lambdaWithCommas2.kt rename to idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/lambdaWithCommas2.kt diff --git a/idea/testData/intentions/moveLambdaOutsideParentheses/lambdaWithCommas2.kt.after b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/lambdaWithCommas2.kt.after similarity index 100% rename from idea/testData/intentions/moveLambdaOutsideParentheses/lambdaWithCommas2.kt.after rename to idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/lambdaWithCommas2.kt.after diff --git a/idea/testData/intentions/moveLambdaOutsideParentheses/lambdaWithCommas3.kt b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/lambdaWithCommas3.kt similarity index 100% rename from idea/testData/intentions/moveLambdaOutsideParentheses/lambdaWithCommas3.kt rename to idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/lambdaWithCommas3.kt diff --git a/idea/testData/intentions/moveLambdaOutsideParentheses/lambdaWithCommas3.kt.after b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/lambdaWithCommas3.kt.after similarity index 100% rename from idea/testData/intentions/moveLambdaOutsideParentheses/lambdaWithCommas3.kt.after rename to idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/lambdaWithCommas3.kt.after diff --git a/idea/testData/intentions/moveLambdaOutsideParentheses/moveLambda1.kt b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/moveLambda1.kt similarity index 100% rename from idea/testData/intentions/moveLambdaOutsideParentheses/moveLambda1.kt rename to idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/moveLambda1.kt diff --git a/idea/testData/intentions/moveLambdaOutsideParentheses/moveLambda1.kt.after b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/moveLambda1.kt.after similarity index 100% rename from idea/testData/intentions/moveLambdaOutsideParentheses/moveLambda1.kt.after rename to idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/moveLambda1.kt.after diff --git a/idea/testData/intentions/moveLambdaOutsideParentheses/moveLambda2.kt b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/moveLambda2.kt similarity index 100% rename from idea/testData/intentions/moveLambdaOutsideParentheses/moveLambda2.kt rename to idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/moveLambda2.kt diff --git a/idea/testData/intentions/moveLambdaOutsideParentheses/moveLambda2.kt.after b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/moveLambda2.kt.after similarity index 100% rename from idea/testData/intentions/moveLambdaOutsideParentheses/moveLambda2.kt.after rename to idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/moveLambda2.kt.after diff --git a/idea/testData/intentions/moveLambdaOutsideParentheses/moveLambda3.kt b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/moveLambda3.kt similarity index 100% rename from idea/testData/intentions/moveLambdaOutsideParentheses/moveLambda3.kt rename to idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/moveLambda3.kt diff --git a/idea/testData/intentions/moveLambdaOutsideParentheses/moveLambda3.kt.after b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/moveLambda3.kt.after similarity index 100% rename from idea/testData/intentions/moveLambdaOutsideParentheses/moveLambda3.kt.after rename to idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/moveLambda3.kt.after diff --git a/idea/testData/intentions/moveLambdaOutsideParentheses/moveLambda4.kt b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/moveLambda4.kt similarity index 90% rename from idea/testData/intentions/moveLambdaOutsideParentheses/moveLambda4.kt rename to idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/moveLambda4.kt index 748b2534dc6..c30bae20722 100644 --- a/idea/testData/intentions/moveLambdaOutsideParentheses/moveLambda4.kt +++ b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/moveLambda4.kt @@ -3,7 +3,7 @@ fun foo() { bar(2, { val x = 3 it * x - }) + }) } fun bar(a: Int, b: (Int) -> Int) { diff --git a/idea/testData/intentions/moveLambdaOutsideParentheses/moveLambda4.kt.after b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/moveLambda4.kt.after similarity index 100% rename from idea/testData/intentions/moveLambdaOutsideParentheses/moveLambda4.kt.after rename to idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/moveLambda4.kt.after diff --git a/idea/testData/intentions/moveLambdaOutsideParentheses/moveLambda5.kt b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/moveLambda5.kt similarity index 100% rename from idea/testData/intentions/moveLambdaOutsideParentheses/moveLambda5.kt rename to idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/moveLambda5.kt diff --git a/idea/testData/intentions/moveLambdaOutsideParentheses/moveLambda5.kt.after b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/moveLambda5.kt.after similarity index 100% rename from idea/testData/intentions/moveLambdaOutsideParentheses/moveLambda5.kt.after rename to idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/moveLambda5.kt.after diff --git a/idea/testData/intentions/moveLambdaOutsideParentheses/moveLambda6.kt b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/moveLambda6.kt similarity index 82% rename from idea/testData/intentions/moveLambdaOutsideParentheses/moveLambda6.kt rename to idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/moveLambda6.kt index 270d607f727..e95cb167b09 100644 --- a/idea/testData/intentions/moveLambdaOutsideParentheses/moveLambda6.kt +++ b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/moveLambda6.kt @@ -1,6 +1,6 @@ // IS_APPLICABLE: true fun foo() { - bar(3, 2, 1, { it }) + bar(3, 2, 1, { it }) } fun bar(name1: Int, name2: Int, name3: Int, name4: (Int) -> Int) : Int { diff --git a/idea/testData/intentions/moveLambdaOutsideParentheses/moveLambda6.kt.after b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/moveLambda6.kt.after similarity index 100% rename from idea/testData/intentions/moveLambdaOutsideParentheses/moveLambda6.kt.after rename to idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/moveLambda6.kt.after diff --git a/idea/testData/intentions/moveLambdaOutsideParentheses/noTwoConsequentLambdas.kt b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/noTwoConsequentLambdas.kt similarity index 100% rename from idea/testData/intentions/moveLambdaOutsideParentheses/noTwoConsequentLambdas.kt rename to idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/noTwoConsequentLambdas.kt diff --git a/idea/testData/intentions/moveLambdaOutsideParentheses/noTwoConsequentLambdas.kt.after b/idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/noTwoConsequentLambdas.kt.after similarity index 100% rename from idea/testData/intentions/moveLambdaOutsideParentheses/noTwoConsequentLambdas.kt.after rename to idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/noTwoConsequentLambdas.kt.after diff --git a/idea/testData/intentions/moveLambdaOutsideParentheses/.intention b/idea/testData/intentions/moveLambdaOutsideParentheses/.intention deleted file mode 100644 index 06f2dcba347..00000000000 --- a/idea/testData/intentions/moveLambdaOutsideParentheses/.intention +++ /dev/null @@ -1 +0,0 @@ -org.jetbrains.kotlin.idea.intentions.MoveLambdaOutsideParenthesesIntention diff --git a/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java index 347a01561e6..6a84d27fc76 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java @@ -2521,6 +2521,123 @@ public class LocalInspectionTestGenerated extends AbstractLocalInspectionTest { } } + @TestMetadata("idea/testData/inspectionsLocal/moveLambdaOutsideParentheses") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class MoveLambdaOutsideParentheses extends AbstractLocalInspectionTest { + public void testAllFilesPresentInMoveLambdaOutsideParentheses() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/inspectionsLocal/moveLambdaOutsideParentheses"), Pattern.compile("^([\\w\\-_]+)\\.(kt|kts)$"), TargetBackend.ANY, true); + } + + @TestMetadata("ambigousOverload.kt") + public void testAmbigousOverload() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/ambigousOverload.kt"); + doTest(fileName); + } + + @TestMetadata("functionalValueCall.kt") + public void testFunctionalValueCall() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/functionalValueCall.kt"); + doTest(fileName); + } + + @TestMetadata("inapplicable1.kt") + public void testInapplicable1() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/inapplicable1.kt"); + doTest(fileName); + } + + @TestMetadata("inapplicable2.kt") + public void testInapplicable2() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/inapplicable2.kt"); + doTest(fileName); + } + + @TestMetadata("inapplicable3.kt") + public void testInapplicable3() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/inapplicable3.kt"); + doTest(fileName); + } + + @TestMetadata("inapplicableAlreadyHasFunctionLiteral.kt") + public void testInapplicableAlreadyHasFunctionLiteral() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/inapplicableAlreadyHasFunctionLiteral.kt"); + doTest(fileName); + } + + @TestMetadata("inapplicableOptionalParametersAfter.kt") + public void testInapplicableOptionalParametersAfter() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/inapplicableOptionalParametersAfter.kt"); + doTest(fileName); + } + + @TestMetadata("labeledLambda.kt") + public void testLabeledLambda() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/labeledLambda.kt"); + doTest(fileName); + } + + @TestMetadata("lambdaWithCommas.kt") + public void testLambdaWithCommas() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/lambdaWithCommas.kt"); + doTest(fileName); + } + + @TestMetadata("lambdaWithCommas2.kt") + public void testLambdaWithCommas2() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/lambdaWithCommas2.kt"); + doTest(fileName); + } + + @TestMetadata("lambdaWithCommas3.kt") + public void testLambdaWithCommas3() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/lambdaWithCommas3.kt"); + doTest(fileName); + } + + @TestMetadata("moveLambda1.kt") + public void testMoveLambda1() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/moveLambda1.kt"); + doTest(fileName); + } + + @TestMetadata("moveLambda2.kt") + public void testMoveLambda2() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/moveLambda2.kt"); + doTest(fileName); + } + + @TestMetadata("moveLambda3.kt") + public void testMoveLambda3() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/moveLambda3.kt"); + doTest(fileName); + } + + @TestMetadata("moveLambda4.kt") + public void testMoveLambda4() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/moveLambda4.kt"); + doTest(fileName); + } + + @TestMetadata("moveLambda5.kt") + public void testMoveLambda5() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/moveLambda5.kt"); + doTest(fileName); + } + + @TestMetadata("moveLambda6.kt") + public void testMoveLambda6() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/moveLambda6.kt"); + doTest(fileName); + } + + @TestMetadata("noTwoConsequentLambdas.kt") + public void testNoTwoConsequentLambdas() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/inspectionsLocal/moveLambdaOutsideParentheses/noTwoConsequentLambdas.kt"); + doTest(fileName); + } + } + @TestMetadata("idea/testData/inspectionsLocal/moveSuspiciousCallableReferenceIntoParentheses") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class) diff --git a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java index d764ac70442..0b784622e3c 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java @@ -11941,123 +11941,6 @@ public class IntentionTestGenerated extends AbstractIntentionTest { } } - @TestMetadata("idea/testData/intentions/moveLambdaOutsideParentheses") - @TestDataPath("$PROJECT_ROOT") - @RunWith(JUnit3RunnerWithInners.class) - public static class MoveLambdaOutsideParentheses extends AbstractIntentionTest { - public void testAllFilesPresentInMoveLambdaOutsideParentheses() throws Exception { - KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/intentions/moveLambdaOutsideParentheses"), Pattern.compile("^([\\w\\-_]+)\\.(kt|kts)$"), TargetBackend.ANY, true); - } - - @TestMetadata("ambigousOverload.kt") - public void testAmbigousOverload() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/moveLambdaOutsideParentheses/ambigousOverload.kt"); - doTest(fileName); - } - - @TestMetadata("functionalValueCall.kt") - public void testFunctionalValueCall() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/moveLambdaOutsideParentheses/functionalValueCall.kt"); - doTest(fileName); - } - - @TestMetadata("inapplicable1.kt") - public void testInapplicable1() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/moveLambdaOutsideParentheses/inapplicable1.kt"); - doTest(fileName); - } - - @TestMetadata("inapplicable2.kt") - public void testInapplicable2() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/moveLambdaOutsideParentheses/inapplicable2.kt"); - doTest(fileName); - } - - @TestMetadata("inapplicable3.kt") - public void testInapplicable3() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/moveLambdaOutsideParentheses/inapplicable3.kt"); - doTest(fileName); - } - - @TestMetadata("inapplicableAlreadyHasFunctionLiteral.kt") - public void testInapplicableAlreadyHasFunctionLiteral() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/moveLambdaOutsideParentheses/inapplicableAlreadyHasFunctionLiteral.kt"); - doTest(fileName); - } - - @TestMetadata("inapplicableOptionalParametersAfter.kt") - public void testInapplicableOptionalParametersAfter() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/moveLambdaOutsideParentheses/inapplicableOptionalParametersAfter.kt"); - doTest(fileName); - } - - @TestMetadata("labeledLambda.kt") - public void testLabeledLambda() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/moveLambdaOutsideParentheses/labeledLambda.kt"); - doTest(fileName); - } - - @TestMetadata("lambdaWithCommas.kt") - public void testLambdaWithCommas() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/moveLambdaOutsideParentheses/lambdaWithCommas.kt"); - doTest(fileName); - } - - @TestMetadata("lambdaWithCommas2.kt") - public void testLambdaWithCommas2() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/moveLambdaOutsideParentheses/lambdaWithCommas2.kt"); - doTest(fileName); - } - - @TestMetadata("lambdaWithCommas3.kt") - public void testLambdaWithCommas3() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/moveLambdaOutsideParentheses/lambdaWithCommas3.kt"); - doTest(fileName); - } - - @TestMetadata("moveLambda1.kt") - public void testMoveLambda1() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/moveLambdaOutsideParentheses/moveLambda1.kt"); - doTest(fileName); - } - - @TestMetadata("moveLambda2.kt") - public void testMoveLambda2() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/moveLambdaOutsideParentheses/moveLambda2.kt"); - doTest(fileName); - } - - @TestMetadata("moveLambda3.kt") - public void testMoveLambda3() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/moveLambdaOutsideParentheses/moveLambda3.kt"); - doTest(fileName); - } - - @TestMetadata("moveLambda4.kt") - public void testMoveLambda4() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/moveLambdaOutsideParentheses/moveLambda4.kt"); - doTest(fileName); - } - - @TestMetadata("moveLambda5.kt") - public void testMoveLambda5() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/moveLambdaOutsideParentheses/moveLambda5.kt"); - doTest(fileName); - } - - @TestMetadata("moveLambda6.kt") - public void testMoveLambda6() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/moveLambdaOutsideParentheses/moveLambda6.kt"); - doTest(fileName); - } - - @TestMetadata("noTwoConsequentLambdas.kt") - public void testNoTwoConsequentLambdas() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/moveLambdaOutsideParentheses/noTwoConsequentLambdas.kt"); - doTest(fileName); - } - } - @TestMetadata("idea/testData/intentions/moveMemberToTopLevel") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class)