From ae2fc19fe547178283d340e5d31ac9cbe46ce3ea Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Thu, 10 Dec 2015 14:22:10 +0300 Subject: [PATCH] Introduce Parameter/Lambda Parameter: Parenthesize binary expressions if operation reference starts with a new line --- .../KotlinInplaceParameterIntroducer.kt | 2 +- .../KotlinIntroduceParameterDialog.kt | 9 +-- .../KotlinIntroduceParameterHandler.kt | 16 ++++- .../refactoring/introduce/introduceUtil.kt | 1 + .../KotlinIntroduceVariableHandler.kt | 7 -- .../multiline/multilineBinaryExpression.kt | 6 ++ .../multilineBinaryExpression.kt.after | 8 +++ .../multilineBinaryExpressionWithComments.kt | 6 ++ ...ilineBinaryExpressionWithComments.kt.after | 8 +++ .../multilineNestedBinaryExpression1.kt | 6 ++ .../multilineNestedBinaryExpression1.kt.after | 8 +++ .../multilineNestedBinaryExpression2.kt | 6 ++ .../multilineNestedBinaryExpression2.kt.after | 8 +++ .../multiline/multilineBinaryExpression.kt | 6 ++ .../multilineBinaryExpression.kt.after | 6 ++ .../multilineBinaryExpressionWithComments.kt | 6 ++ ...ilineBinaryExpressionWithComments.kt.after | 6 ++ .../multilineNestedBinaryExpression1.kt | 6 ++ .../multilineNestedBinaryExpression1.kt.after | 6 ++ .../multilineNestedBinaryExpression2.kt | 6 ++ .../multilineNestedBinaryExpression2.kt.after | 6 ++ .../introduce/ExtractionTestGenerated.java | 66 +++++++++++++++++++ 22 files changed, 187 insertions(+), 18 deletions(-) create mode 100644 idea/testData/refactoring/introduceLambdaParameter/multiline/multilineBinaryExpression.kt create mode 100644 idea/testData/refactoring/introduceLambdaParameter/multiline/multilineBinaryExpression.kt.after create mode 100644 idea/testData/refactoring/introduceLambdaParameter/multiline/multilineBinaryExpressionWithComments.kt create mode 100644 idea/testData/refactoring/introduceLambdaParameter/multiline/multilineBinaryExpressionWithComments.kt.after create mode 100644 idea/testData/refactoring/introduceLambdaParameter/multiline/multilineNestedBinaryExpression1.kt create mode 100644 idea/testData/refactoring/introduceLambdaParameter/multiline/multilineNestedBinaryExpression1.kt.after create mode 100644 idea/testData/refactoring/introduceLambdaParameter/multiline/multilineNestedBinaryExpression2.kt create mode 100644 idea/testData/refactoring/introduceLambdaParameter/multiline/multilineNestedBinaryExpression2.kt.after create mode 100644 idea/testData/refactoring/introduceParameter/multiline/multilineBinaryExpression.kt create mode 100644 idea/testData/refactoring/introduceParameter/multiline/multilineBinaryExpression.kt.after create mode 100644 idea/testData/refactoring/introduceParameter/multiline/multilineBinaryExpressionWithComments.kt create mode 100644 idea/testData/refactoring/introduceParameter/multiline/multilineBinaryExpressionWithComments.kt.after create mode 100644 idea/testData/refactoring/introduceParameter/multiline/multilineNestedBinaryExpression1.kt create mode 100644 idea/testData/refactoring/introduceParameter/multiline/multilineNestedBinaryExpression1.kt.after create mode 100644 idea/testData/refactoring/introduceParameter/multiline/multilineNestedBinaryExpression2.kt create mode 100644 idea/testData/refactoring/introduceParameter/multiline/multilineNestedBinaryExpression2.kt.after diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinInplaceParameterIntroducer.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinInplaceParameterIntroducer.kt index 6280f069027..ffbd871b4d5 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinInplaceParameterIntroducer.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinInplaceParameterIntroducer.kt @@ -248,7 +248,7 @@ public class KotlinInplaceParameterIntroducer( return descriptor.copy( originalRange = originalRange, occurrencesToReplace = if (replaceAll) getOccurrences().map { it.toRange() } else originalRange.singletonList(), - newArgumentValue = getExpr()!! + argumentValue = getExpr()!! ) } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinIntroduceParameterDialog.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinIntroduceParameterDialog.kt index bc6af555e9a..298ed38d12b 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinIntroduceParameterDialog.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinIntroduceParameterDialog.kt @@ -19,14 +19,11 @@ package org.jetbrains.kotlin.idea.refactoring.introduce.introduceParameter import com.intellij.openapi.command.impl.FinishMarkAction import com.intellij.openapi.command.impl.StartMarkAction import com.intellij.openapi.editor.Editor -import com.intellij.openapi.options.ConfigurationException import com.intellij.openapi.project.Project -import com.intellij.psi.PsiElement import com.intellij.refactoring.BaseRefactoringProcessor import com.intellij.refactoring.ui.NameSuggestionsField import com.intellij.refactoring.ui.RefactoringDialog import com.intellij.ui.NonFocusableCheckBox -import com.intellij.ui.TitledSeparator import com.intellij.usageView.BaseUsageViewDescriptor import com.intellij.usageView.UsageInfo import org.jetbrains.kotlin.idea.KotlinFileType @@ -38,13 +35,11 @@ import org.jetbrains.kotlin.idea.refactoring.introduce.extractFunction.ui.Kotlin import org.jetbrains.kotlin.idea.refactoring.introduce.extractionEngine.* import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers import org.jetbrains.kotlin.psi.* -import org.jetbrains.kotlin.resolve.AnalyzingUtils import org.jetbrains.kotlin.types.KotlinType import java.awt.GridBagConstraints import java.awt.GridBagLayout import java.awt.Insets -import java.util.Collections -import java.util.LinkedHashMap +import java.util.* import javax.swing.JCheckBox import javax.swing.JComponent import javax.swing.JLabel @@ -301,7 +296,7 @@ public class KotlinIntroduceParameterDialog private constructor( val descriptorToRefactor = descriptor.copy( newParameterName = chosenName, newParameterTypeText = chosenType, - newArgumentValue = newArgumentValue, + argumentValue = newArgumentValue, withDefaultValue = defaultValueCheckBox!!.isSelected(), occurrencesToReplace = with(descriptor) { if (replaceAllCheckBox?.isSelected() ?: true) { diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinIntroduceParameterHandler.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinIntroduceParameterHandler.kt index 53daf987fa3..6caf1ba944b 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinIntroduceParameterHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinIntroduceParameterHandler.kt @@ -70,13 +70,22 @@ public data class IntroduceParameterDescriptor( val callableDescriptor: FunctionDescriptor, val newParameterName: String, val newParameterTypeText: String, - val newArgumentValue: KtExpression, + val argumentValue: KtExpression, val withDefaultValue: Boolean, val parametersUsages: MultiMap, val occurrencesToReplace: List, val parametersToRemove: List = getParametersToRemove(withDefaultValue, parametersUsages, occurrencesToReplace), val occurrenceReplacer: IntroduceParameterDescriptor.(KotlinPsiRange) -> Unit = {} ) { + val newArgumentValue: KtExpression by lazy { + if (argumentValue.mustBeParenthesizedInInitializerPosition()) { + KtPsiFactory(callable).createExpressionByPattern("($0)", argumentValue) + } + else { + argumentValue + } + } + val originalOccurrence: KotlinPsiRange get() = occurrencesToReplace.first { it.getTextRange().intersects(originalRange.getTextRange()) } val valVar: KotlinValVar @@ -271,6 +280,7 @@ public open class KotlinIntroduceParameterHandler( && !isTestMode && !haveLambdaArgumentsToReplace && expression.extractableSubstringInfo == null + && !expression.mustBeParenthesizedInInitializerPosition() val originalExpression = KtPsiUtil.safeDeparenthesize(expression) val psiFactory = KtPsiFactory(project) @@ -282,7 +292,7 @@ public open class KotlinIntroduceParameterHandler( callableDescriptor = functionDescriptor, newParameterName = suggestedNames.first(), newParameterTypeText = IdeDescriptorRenderers.SOURCE_CODE_SHORT_NAMES_IN_TYPES.renderType(replacementType), - newArgumentValue = originalExpression, + argumentValue = originalExpression, withDefaultValue = false, parametersUsages = parametersUsages, occurrencesToReplace = occurrencesToReplace, @@ -435,7 +445,7 @@ public open class KotlinIntroduceLambdaParameterHandler( callableDescriptor = callableDescriptor, newParameterName = "", // to be chosen in the dialog newParameterTypeText = "", // to be chosen in the dialog - newArgumentValue = KtPsiFactory(project).createExpression("{}"), // substituted later + argumentValue = KtPsiFactory(project).createExpression("{}"), // substituted later withDefaultValue = false, parametersUsages = findInternalUsagesOfParametersAndReceiver(callable, callableDescriptor), occurrencesToReplace = listOf(originalRange), diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceUtil.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceUtil.kt index c82d3508bee..aad21670f0d 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceUtil.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceUtil.kt @@ -21,6 +21,7 @@ import com.intellij.openapi.editor.ScrollType import com.intellij.openapi.project.Project import com.intellij.openapi.util.Key import com.intellij.openapi.util.TextRange +import com.intellij.psi.PsiComment import com.intellij.psi.PsiElement import com.intellij.psi.PsiWhiteSpace import com.intellij.psi.util.PsiTreeUtil diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceVariable/KotlinIntroduceVariableHandler.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceVariable/KotlinIntroduceVariableHandler.kt index 8e1871d965d..9cbf590b2e1 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceVariable/KotlinIntroduceVariableHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceVariable/KotlinIntroduceVariableHandler.kt @@ -132,13 +132,6 @@ object KotlinIntroduceVariableHandler : KotlinIntroduceHandlerBase() { return result } - private fun KtExpression.mustBeParenthesizedInInitializerPosition(): Boolean { - if (this !is KtBinaryExpression) return false - - if (left?.mustBeParenthesizedInInitializerPosition() ?: false) return true - return PsiChildRange(left, operationReference).any { (it is PsiWhiteSpace) && it.textContains('\n') } - } - private fun runRefactoring ( expression: KtExpression, commonContainer: PsiElement, diff --git a/idea/testData/refactoring/introduceLambdaParameter/multiline/multilineBinaryExpression.kt b/idea/testData/refactoring/introduceLambdaParameter/multiline/multilineBinaryExpression.kt new file mode 100644 index 00000000000..01c92bdd09e --- /dev/null +++ b/idea/testData/refactoring/introduceLambdaParameter/multiline/multilineBinaryExpression.kt @@ -0,0 +1,6 @@ +fun foo(i: Int) { } + +fun test() { + foo(1 + + 2) +} \ No newline at end of file diff --git a/idea/testData/refactoring/introduceLambdaParameter/multiline/multilineBinaryExpression.kt.after b/idea/testData/refactoring/introduceLambdaParameter/multiline/multilineBinaryExpression.kt.after new file mode 100644 index 00000000000..342fc53f9cf --- /dev/null +++ b/idea/testData/refactoring/introduceLambdaParameter/multiline/multilineBinaryExpression.kt.after @@ -0,0 +1,8 @@ +fun foo(i: Int) { } + +fun test(i: () -> Int = { + (1 + + 2) +}) { + foo(i()) +} \ No newline at end of file diff --git a/idea/testData/refactoring/introduceLambdaParameter/multiline/multilineBinaryExpressionWithComments.kt b/idea/testData/refactoring/introduceLambdaParameter/multiline/multilineBinaryExpressionWithComments.kt new file mode 100644 index 00000000000..3ea6345a6b4 --- /dev/null +++ b/idea/testData/refactoring/introduceLambdaParameter/multiline/multilineBinaryExpressionWithComments.kt @@ -0,0 +1,6 @@ +fun foo(i: Int) { } + +fun test() { + foo(1 // abc + /*def*/ + 2) +} \ No newline at end of file diff --git a/idea/testData/refactoring/introduceLambdaParameter/multiline/multilineBinaryExpressionWithComments.kt.after b/idea/testData/refactoring/introduceLambdaParameter/multiline/multilineBinaryExpressionWithComments.kt.after new file mode 100644 index 00000000000..89f2f50f6d8 --- /dev/null +++ b/idea/testData/refactoring/introduceLambdaParameter/multiline/multilineBinaryExpressionWithComments.kt.after @@ -0,0 +1,8 @@ +fun foo(i: Int) { } + +fun test(i: () -> Int = { + (1 // abc + /*def*/ + 2) +}) { + foo(i()) +} \ No newline at end of file diff --git a/idea/testData/refactoring/introduceLambdaParameter/multiline/multilineNestedBinaryExpression1.kt b/idea/testData/refactoring/introduceLambdaParameter/multiline/multilineNestedBinaryExpression1.kt new file mode 100644 index 00000000000..2602d7ce7ff --- /dev/null +++ b/idea/testData/refactoring/introduceLambdaParameter/multiline/multilineNestedBinaryExpression1.kt @@ -0,0 +1,6 @@ +fun foo(i: Int) { } + +fun test() { + foo(1 + + 2 - 3) +} \ No newline at end of file diff --git a/idea/testData/refactoring/introduceLambdaParameter/multiline/multilineNestedBinaryExpression1.kt.after b/idea/testData/refactoring/introduceLambdaParameter/multiline/multilineNestedBinaryExpression1.kt.after new file mode 100644 index 00000000000..2cc60b16f6a --- /dev/null +++ b/idea/testData/refactoring/introduceLambdaParameter/multiline/multilineNestedBinaryExpression1.kt.after @@ -0,0 +1,8 @@ +fun foo(i: Int) { } + +fun test(i: () -> Int = { + (1 + + 2 - 3) +}) { + foo(i()) +} \ No newline at end of file diff --git a/idea/testData/refactoring/introduceLambdaParameter/multiline/multilineNestedBinaryExpression2.kt b/idea/testData/refactoring/introduceLambdaParameter/multiline/multilineNestedBinaryExpression2.kt new file mode 100644 index 00000000000..3808a0a0a50 --- /dev/null +++ b/idea/testData/refactoring/introduceLambdaParameter/multiline/multilineNestedBinaryExpression2.kt @@ -0,0 +1,6 @@ +fun foo(i: Int) { } + +fun test() { + foo(1 + 2 + - 3) +} \ No newline at end of file diff --git a/idea/testData/refactoring/introduceLambdaParameter/multiline/multilineNestedBinaryExpression2.kt.after b/idea/testData/refactoring/introduceLambdaParameter/multiline/multilineNestedBinaryExpression2.kt.after new file mode 100644 index 00000000000..86a45908394 --- /dev/null +++ b/idea/testData/refactoring/introduceLambdaParameter/multiline/multilineNestedBinaryExpression2.kt.after @@ -0,0 +1,8 @@ +fun foo(i: Int) { } + +fun test(i: () -> Int = { + (1 + 2 + - 3) +}) { + foo(i()) +} \ No newline at end of file diff --git a/idea/testData/refactoring/introduceParameter/multiline/multilineBinaryExpression.kt b/idea/testData/refactoring/introduceParameter/multiline/multilineBinaryExpression.kt new file mode 100644 index 00000000000..01c92bdd09e --- /dev/null +++ b/idea/testData/refactoring/introduceParameter/multiline/multilineBinaryExpression.kt @@ -0,0 +1,6 @@ +fun foo(i: Int) { } + +fun test() { + foo(1 + + 2) +} \ No newline at end of file diff --git a/idea/testData/refactoring/introduceParameter/multiline/multilineBinaryExpression.kt.after b/idea/testData/refactoring/introduceParameter/multiline/multilineBinaryExpression.kt.after new file mode 100644 index 00000000000..b782cb407cf --- /dev/null +++ b/idea/testData/refactoring/introduceParameter/multiline/multilineBinaryExpression.kt.after @@ -0,0 +1,6 @@ +fun foo(i: Int) { } + +fun test(i: Int = (1 + + 2)) { + foo(i) +} \ No newline at end of file diff --git a/idea/testData/refactoring/introduceParameter/multiline/multilineBinaryExpressionWithComments.kt b/idea/testData/refactoring/introduceParameter/multiline/multilineBinaryExpressionWithComments.kt new file mode 100644 index 00000000000..3ea6345a6b4 --- /dev/null +++ b/idea/testData/refactoring/introduceParameter/multiline/multilineBinaryExpressionWithComments.kt @@ -0,0 +1,6 @@ +fun foo(i: Int) { } + +fun test() { + foo(1 // abc + /*def*/ + 2) +} \ No newline at end of file diff --git a/idea/testData/refactoring/introduceParameter/multiline/multilineBinaryExpressionWithComments.kt.after b/idea/testData/refactoring/introduceParameter/multiline/multilineBinaryExpressionWithComments.kt.after new file mode 100644 index 00000000000..4fffbdfb58e --- /dev/null +++ b/idea/testData/refactoring/introduceParameter/multiline/multilineBinaryExpressionWithComments.kt.after @@ -0,0 +1,6 @@ +fun foo(i: Int) { } + +fun test(i: Int = (1 // abc + /*def*/ + 2)) { + foo(i) +} \ No newline at end of file diff --git a/idea/testData/refactoring/introduceParameter/multiline/multilineNestedBinaryExpression1.kt b/idea/testData/refactoring/introduceParameter/multiline/multilineNestedBinaryExpression1.kt new file mode 100644 index 00000000000..2602d7ce7ff --- /dev/null +++ b/idea/testData/refactoring/introduceParameter/multiline/multilineNestedBinaryExpression1.kt @@ -0,0 +1,6 @@ +fun foo(i: Int) { } + +fun test() { + foo(1 + + 2 - 3) +} \ No newline at end of file diff --git a/idea/testData/refactoring/introduceParameter/multiline/multilineNestedBinaryExpression1.kt.after b/idea/testData/refactoring/introduceParameter/multiline/multilineNestedBinaryExpression1.kt.after new file mode 100644 index 00000000000..d47e0d33aef --- /dev/null +++ b/idea/testData/refactoring/introduceParameter/multiline/multilineNestedBinaryExpression1.kt.after @@ -0,0 +1,6 @@ +fun foo(i: Int) { } + +fun test(i: Int = (1 + + 2 - 3)) { + foo(i) +} \ No newline at end of file diff --git a/idea/testData/refactoring/introduceParameter/multiline/multilineNestedBinaryExpression2.kt b/idea/testData/refactoring/introduceParameter/multiline/multilineNestedBinaryExpression2.kt new file mode 100644 index 00000000000..3808a0a0a50 --- /dev/null +++ b/idea/testData/refactoring/introduceParameter/multiline/multilineNestedBinaryExpression2.kt @@ -0,0 +1,6 @@ +fun foo(i: Int) { } + +fun test() { + foo(1 + 2 + - 3) +} \ No newline at end of file diff --git a/idea/testData/refactoring/introduceParameter/multiline/multilineNestedBinaryExpression2.kt.after b/idea/testData/refactoring/introduceParameter/multiline/multilineNestedBinaryExpression2.kt.after new file mode 100644 index 00000000000..d662fb497ca --- /dev/null +++ b/idea/testData/refactoring/introduceParameter/multiline/multilineNestedBinaryExpression2.kt.after @@ -0,0 +1,6 @@ +fun foo(i: Int) { } + +fun test(i: Int = (1 + 2 + - 3)) { + foo(i) +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/ExtractionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/ExtractionTestGenerated.java index 0f9fbee83b1..bc0b91cb296 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/ExtractionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/ExtractionTestGenerated.java @@ -3502,6 +3502,39 @@ public class ExtractionTestGenerated extends AbstractExtractionTest { doIntroduceSimpleParameterTest(fileName); } + @TestMetadata("idea/testData/refactoring/introduceParameter/multiline") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class Multiline extends AbstractExtractionTest { + public void testAllFilesPresentInMultiline() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/refactoring/introduceParameter/multiline"), Pattern.compile("^(.+)\\.(kt|kts)$"), true); + } + + @TestMetadata("multilineBinaryExpression.kt") + public void testMultilineBinaryExpression() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/introduceParameter/multiline/multilineBinaryExpression.kt"); + doIntroduceSimpleParameterTest(fileName); + } + + @TestMetadata("multilineBinaryExpressionWithComments.kt") + public void testMultilineBinaryExpressionWithComments() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/introduceParameter/multiline/multilineBinaryExpressionWithComments.kt"); + doIntroduceSimpleParameterTest(fileName); + } + + @TestMetadata("multilineNestedBinaryExpression1.kt") + public void testMultilineNestedBinaryExpression1() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/introduceParameter/multiline/multilineNestedBinaryExpression1.kt"); + doIntroduceSimpleParameterTest(fileName); + } + + @TestMetadata("multilineNestedBinaryExpression2.kt") + public void testMultilineNestedBinaryExpression2() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/introduceParameter/multiline/multilineNestedBinaryExpression2.kt"); + doIntroduceSimpleParameterTest(fileName); + } + } + @TestMetadata("idea/testData/refactoring/introduceParameter/script") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class) @@ -3697,6 +3730,39 @@ public class ExtractionTestGenerated extends AbstractExtractionTest { doIntroduceLambdaParameterTest(fileName); } + @TestMetadata("idea/testData/refactoring/introduceLambdaParameter/multiline") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class Multiline extends AbstractExtractionTest { + public void testAllFilesPresentInMultiline() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/refactoring/introduceLambdaParameter/multiline"), Pattern.compile("^(.+)\\.(kt|kts)$"), true); + } + + @TestMetadata("multilineBinaryExpression.kt") + public void testMultilineBinaryExpression() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/introduceLambdaParameter/multiline/multilineBinaryExpression.kt"); + doIntroduceLambdaParameterTest(fileName); + } + + @TestMetadata("multilineBinaryExpressionWithComments.kt") + public void testMultilineBinaryExpressionWithComments() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/introduceLambdaParameter/multiline/multilineBinaryExpressionWithComments.kt"); + doIntroduceLambdaParameterTest(fileName); + } + + @TestMetadata("multilineNestedBinaryExpression1.kt") + public void testMultilineNestedBinaryExpression1() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/introduceLambdaParameter/multiline/multilineNestedBinaryExpression1.kt"); + doIntroduceLambdaParameterTest(fileName); + } + + @TestMetadata("multilineNestedBinaryExpression2.kt") + public void testMultilineNestedBinaryExpression2() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/introduceLambdaParameter/multiline/multilineNestedBinaryExpression2.kt"); + doIntroduceLambdaParameterTest(fileName); + } + } + @TestMetadata("idea/testData/refactoring/introduceLambdaParameter/stringTemplates") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class)