diff --git a/idea/resources/META-INF/plugin-common.xml b/idea/resources/META-INF/plugin-common.xml index d996c1dbb6e..e5fa8dbeda9 100644 --- a/idea/resources/META-INF/plugin-common.xml +++ b/idea/resources/META-INF/plugin-common.xml @@ -1704,6 +1704,16 @@ Kotlin + + org.jetbrains.kotlin.idea.intentions.ConvertLambdaToMultiLineIntention + Kotlin + + + + org.jetbrains.kotlin.idea.intentions.ConvertLambdaToSingleLineIntention + Kotlin + + + println(item) +} \ No newline at end of file diff --git a/idea/resources/intentionDescriptions/ConvertLambdaToMultiLineIntention/before.kt.template b/idea/resources/intentionDescriptions/ConvertLambdaToMultiLineIntention/before.kt.template new file mode 100644 index 00000000000..21a38915df1 --- /dev/null +++ b/idea/resources/intentionDescriptions/ConvertLambdaToMultiLineIntention/before.kt.template @@ -0,0 +1 @@ +list.forEach { item -> println(item) } \ No newline at end of file diff --git a/idea/resources/intentionDescriptions/ConvertLambdaToMultiLineIntention/description.html b/idea/resources/intentionDescriptions/ConvertLambdaToMultiLineIntention/description.html new file mode 100644 index 00000000000..ece09f7c1d1 --- /dev/null +++ b/idea/resources/intentionDescriptions/ConvertLambdaToMultiLineIntention/description.html @@ -0,0 +1,5 @@ + + +This intention converts a single-line lambda to a multi-line one. + + \ No newline at end of file diff --git a/idea/resources/intentionDescriptions/ConvertLambdaToSingleLineIntention/after.kt.template b/idea/resources/intentionDescriptions/ConvertLambdaToSingleLineIntention/after.kt.template new file mode 100644 index 00000000000..21a38915df1 --- /dev/null +++ b/idea/resources/intentionDescriptions/ConvertLambdaToSingleLineIntention/after.kt.template @@ -0,0 +1 @@ +list.forEach { item -> println(item) } \ No newline at end of file diff --git a/idea/resources/intentionDescriptions/ConvertLambdaToSingleLineIntention/before.kt.template b/idea/resources/intentionDescriptions/ConvertLambdaToSingleLineIntention/before.kt.template new file mode 100644 index 00000000000..84932276ce4 --- /dev/null +++ b/idea/resources/intentionDescriptions/ConvertLambdaToSingleLineIntention/before.kt.template @@ -0,0 +1,3 @@ +list.forEach { item -> + println(item) +} \ No newline at end of file diff --git a/idea/resources/intentionDescriptions/ConvertLambdaToSingleLineIntention/description.html b/idea/resources/intentionDescriptions/ConvertLambdaToSingleLineIntention/description.html new file mode 100644 index 00000000000..988fc78b1da --- /dev/null +++ b/idea/resources/intentionDescriptions/ConvertLambdaToSingleLineIntention/description.html @@ -0,0 +1,5 @@ + + +This intention converts a multi-line lambda to a single-line one. + + \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertLambdaLineIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertLambdaLineIntention.kt new file mode 100644 index 00000000000..ecb1a024a98 --- /dev/null +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertLambdaLineIntention.kt @@ -0,0 +1,65 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * 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.intentions + +import com.intellij.openapi.editor.Editor +import com.intellij.psi.PsiComment +import org.jetbrains.kotlin.idea.inspections.RedundantSemicolonInspection +import org.jetbrains.kotlin.idea.refactoring.getLineNumber +import org.jetbrains.kotlin.lexer.KtTokens +import org.jetbrains.kotlin.psi.KtLambdaExpression +import org.jetbrains.kotlin.psi.KtPsiFactory +import org.jetbrains.kotlin.psi.psiUtil.allChildren +import org.jetbrains.kotlin.psi.psiUtil.getNextSiblingIgnoringWhitespace +import org.jetbrains.kotlin.psi.psiUtil.getPrevSiblingIgnoringWhitespace + +sealed class ConvertLambdaLineIntention(private val toMultiLine: Boolean) : SelfTargetingIntention( + KtLambdaExpression::class.java, "Convert to ${if (toMultiLine) "multi" else "single"}-line lambda" +) { + override fun isApplicableTo(element: KtLambdaExpression, caretOffset: Int): Boolean { + val functionLiteral = element.functionLiteral + val body = functionLiteral.bodyBlockExpression ?: return false + val startLine = functionLiteral.getLineNumber(start = true) + val endLine = functionLiteral.getLineNumber(start = false) + return if (toMultiLine) { + startLine == endLine + } else { + if (startLine == endLine) return false + val allChildren = body.allChildren + if (allChildren.any { it is PsiComment && it.node.elementType == KtTokens.EOL_COMMENT }) return false + val first = allChildren.first?.getNextSiblingIgnoringWhitespace(withItself = true) ?: return true + val last = allChildren.last?.getPrevSiblingIgnoringWhitespace(withItself = true) + first.getLineNumber(start = true) == last?.getLineNumber(start = false) + } + } + + override fun applyTo(element: KtLambdaExpression, editor: Editor?) { + val functionLiteral = element.functionLiteral + val body = functionLiteral.bodyBlockExpression ?: return + val psiFactory = KtPsiFactory(element) + if (toMultiLine) { + body.allChildren.forEach { + if (it.node.elementType == KtTokens.SEMICOLON) { + body.addAfter(psiFactory.createNewLine(), it) + if (RedundantSemicolonInspection.isRedundantSemicolon(it)) it.delete() + } + } + } + val bodyText = body.text + val startLineBreak = if (toMultiLine) "\n" else "" + val endLineBreak = if (toMultiLine && bodyText != "") "\n" else "" + element.replace( + psiFactory.createLambdaExpression( + functionLiteral.valueParameters.joinToString { it.text }, + "$startLineBreak$bodyText$endLineBreak" + ) + ) + } +} + +class ConvertLambdaToMultiLineIntention : ConvertLambdaLineIntention(toMultiLine = true) + +class ConvertLambdaToSingleLineIntention : ConvertLambdaLineIntention(toMultiLine = false) diff --git a/idea/testData/intentions/convertLambdaToMultiLine/.intention b/idea/testData/intentions/convertLambdaToMultiLine/.intention new file mode 100644 index 00000000000..098ca97d8fd --- /dev/null +++ b/idea/testData/intentions/convertLambdaToMultiLine/.intention @@ -0,0 +1 @@ +org.jetbrains.kotlin.idea.intentions.ConvertLambdaToMultiLineIntention diff --git a/idea/testData/intentions/convertLambdaToMultiLine/multiLine.kt b/idea/testData/intentions/convertLambdaToMultiLine/multiLine.kt new file mode 100644 index 00000000000..0b58e57c330 --- /dev/null +++ b/idea/testData/intentions/convertLambdaToMultiLine/multiLine.kt @@ -0,0 +1,7 @@ +// IS_APPLICABLE: false +// WITH_RUNTIME +fun test(list: List) { + list.forEach { + println(it) + } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertLambdaToMultiLine/simple.kt b/idea/testData/intentions/convertLambdaToMultiLine/simple.kt new file mode 100644 index 00000000000..1e8ee608855 --- /dev/null +++ b/idea/testData/intentions/convertLambdaToMultiLine/simple.kt @@ -0,0 +1,4 @@ +// WITH_RUNTIME +fun test(list: List) { + list.forEach {} +} \ No newline at end of file diff --git a/idea/testData/intentions/convertLambdaToMultiLine/simple.kt.after b/idea/testData/intentions/convertLambdaToMultiLine/simple.kt.after new file mode 100644 index 00000000000..17b60b038ce --- /dev/null +++ b/idea/testData/intentions/convertLambdaToMultiLine/simple.kt.after @@ -0,0 +1,5 @@ +// WITH_RUNTIME +fun test(list: List) { + list.forEach { + } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertLambdaToMultiLine/simple2.kt b/idea/testData/intentions/convertLambdaToMultiLine/simple2.kt new file mode 100644 index 00000000000..fe1c44dc898 --- /dev/null +++ b/idea/testData/intentions/convertLambdaToMultiLine/simple2.kt @@ -0,0 +1,4 @@ +// WITH_RUNTIME +fun test(list: List) { + list.forEach { println(it) } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertLambdaToMultiLine/simple2.kt.after b/idea/testData/intentions/convertLambdaToMultiLine/simple2.kt.after new file mode 100644 index 00000000000..aef1fc7f533 --- /dev/null +++ b/idea/testData/intentions/convertLambdaToMultiLine/simple2.kt.after @@ -0,0 +1,6 @@ +// WITH_RUNTIME +fun test(list: List) { + list.forEach { + println(it) + } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertLambdaToMultiLine/simple3.kt b/idea/testData/intentions/convertLambdaToMultiLine/simple3.kt new file mode 100644 index 00000000000..20289104557 --- /dev/null +++ b/idea/testData/intentions/convertLambdaToMultiLine/simple3.kt @@ -0,0 +1,4 @@ +// WITH_RUNTIME +fun test(list: List) { + list.forEach { item -> println(item) } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertLambdaToMultiLine/simple3.kt.after b/idea/testData/intentions/convertLambdaToMultiLine/simple3.kt.after new file mode 100644 index 00000000000..7e7bbd4c8e4 --- /dev/null +++ b/idea/testData/intentions/convertLambdaToMultiLine/simple3.kt.after @@ -0,0 +1,6 @@ +// WITH_RUNTIME +fun test(list: List) { + list.forEach { item -> + println(item) + } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertLambdaToMultiLine/simple4.kt b/idea/testData/intentions/convertLambdaToMultiLine/simple4.kt new file mode 100644 index 00000000000..a50004c1eaa --- /dev/null +++ b/idea/testData/intentions/convertLambdaToMultiLine/simple4.kt @@ -0,0 +1,4 @@ +// WITH_RUNTIME +fun test(list: List) { + list.forEach { item -> println(item); println(item); println(item) /* comment */ } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertLambdaToMultiLine/simple4.kt.after b/idea/testData/intentions/convertLambdaToMultiLine/simple4.kt.after new file mode 100644 index 00000000000..c2dfa59d317 --- /dev/null +++ b/idea/testData/intentions/convertLambdaToMultiLine/simple4.kt.after @@ -0,0 +1,8 @@ +// WITH_RUNTIME +fun test(list: List) { + list.forEach { item -> + println(item) + println(item) + println(item) /* comment */ + } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertLambdaToMultiLine/simple5.kt b/idea/testData/intentions/convertLambdaToMultiLine/simple5.kt new file mode 100644 index 00000000000..fb054b409fe --- /dev/null +++ b/idea/testData/intentions/convertLambdaToMultiLine/simple5.kt @@ -0,0 +1,4 @@ +// WITH_RUNTIME +fun test(list: List) { + list.forEachIndexed { index, s -> println(index) } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertLambdaToMultiLine/simple5.kt.after b/idea/testData/intentions/convertLambdaToMultiLine/simple5.kt.after new file mode 100644 index 00000000000..deb00db979e --- /dev/null +++ b/idea/testData/intentions/convertLambdaToMultiLine/simple5.kt.after @@ -0,0 +1,6 @@ +// WITH_RUNTIME +fun test(list: List) { + list.forEachIndexed { index, s -> + println(index) + } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertLambdaToMultiLine/simple6.kt b/idea/testData/intentions/convertLambdaToMultiLine/simple6.kt new file mode 100644 index 00000000000..88b3dad41cd --- /dev/null +++ b/idea/testData/intentions/convertLambdaToMultiLine/simple6.kt @@ -0,0 +1,4 @@ +// WITH_RUNTIME +fun test(list: List>) { + list.forEach { (s, _) -> println(s) } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertLambdaToMultiLine/simple6.kt.after b/idea/testData/intentions/convertLambdaToMultiLine/simple6.kt.after new file mode 100644 index 00000000000..649d6641d70 --- /dev/null +++ b/idea/testData/intentions/convertLambdaToMultiLine/simple6.kt.after @@ -0,0 +1,6 @@ +// WITH_RUNTIME +fun test(list: List>) { + list.forEach { (s, _) -> + println(s) + } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertLambdaToSingleLine/.intention b/idea/testData/intentions/convertLambdaToSingleLine/.intention new file mode 100644 index 00000000000..618a15c48b0 --- /dev/null +++ b/idea/testData/intentions/convertLambdaToSingleLine/.intention @@ -0,0 +1 @@ +org.jetbrains.kotlin.idea.intentions.ConvertLambdaToSingleLineIntention diff --git a/idea/testData/intentions/convertLambdaToSingleLine/hasEolComment.kt b/idea/testData/intentions/convertLambdaToSingleLine/hasEolComment.kt new file mode 100644 index 00000000000..12380ec22d9 --- /dev/null +++ b/idea/testData/intentions/convertLambdaToSingleLine/hasEolComment.kt @@ -0,0 +1,7 @@ +// IS_APPLICABLE: false +// WITH_RUNTIME +fun test(list: List) { + list.forEach { item -> + println(item) // comment + } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertLambdaToSingleLine/multiLineBody.kt b/idea/testData/intentions/convertLambdaToSingleLine/multiLineBody.kt new file mode 100644 index 00000000000..27d5b39dcf3 --- /dev/null +++ b/idea/testData/intentions/convertLambdaToSingleLine/multiLineBody.kt @@ -0,0 +1,8 @@ +// IS_APPLICABLE: false +// WITH_RUNTIME +fun test(list: List) { + list.forEach { item -> + println(item) + println(item) + } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertLambdaToSingleLine/multiLineBody2.kt b/idea/testData/intentions/convertLambdaToSingleLine/multiLineBody2.kt new file mode 100644 index 00000000000..8f93fa4f526 --- /dev/null +++ b/idea/testData/intentions/convertLambdaToSingleLine/multiLineBody2.kt @@ -0,0 +1,10 @@ +// WITH_RUNTIME +fun test(list: List) { + list.forEach { item -> + + + println(item) /* comment */ + + + } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertLambdaToSingleLine/multiLineBody2.kt.after b/idea/testData/intentions/convertLambdaToSingleLine/multiLineBody2.kt.after new file mode 100644 index 00000000000..dd62b47f93b --- /dev/null +++ b/idea/testData/intentions/convertLambdaToSingleLine/multiLineBody2.kt.after @@ -0,0 +1,4 @@ +// WITH_RUNTIME +fun test(list: List) { + list.forEach { item -> println(item) /* comment */ } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertLambdaToSingleLine/multiLineBody3.kt b/idea/testData/intentions/convertLambdaToSingleLine/multiLineBody3.kt new file mode 100644 index 00000000000..36dfa5f6ea7 --- /dev/null +++ b/idea/testData/intentions/convertLambdaToSingleLine/multiLineBody3.kt @@ -0,0 +1,7 @@ +// WITH_RUNTIME +fun test(list: List) { + list.forEach { + item -> + println(item) + } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertLambdaToSingleLine/multiLineBody3.kt.after b/idea/testData/intentions/convertLambdaToSingleLine/multiLineBody3.kt.after new file mode 100644 index 00000000000..8a9f870bf43 --- /dev/null +++ b/idea/testData/intentions/convertLambdaToSingleLine/multiLineBody3.kt.after @@ -0,0 +1,4 @@ +// WITH_RUNTIME +fun test(list: List) { + list.forEach { item -> println(item) } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertLambdaToSingleLine/simple.kt b/idea/testData/intentions/convertLambdaToSingleLine/simple.kt new file mode 100644 index 00000000000..6f84324f5be --- /dev/null +++ b/idea/testData/intentions/convertLambdaToSingleLine/simple.kt @@ -0,0 +1,5 @@ +// WITH_RUNTIME +fun test(list: List) { + list.forEach { + } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertLambdaToSingleLine/simple.kt.after b/idea/testData/intentions/convertLambdaToSingleLine/simple.kt.after new file mode 100644 index 00000000000..495f6af8b93 --- /dev/null +++ b/idea/testData/intentions/convertLambdaToSingleLine/simple.kt.after @@ -0,0 +1,4 @@ +// WITH_RUNTIME +fun test(list: List) { + list.forEach { } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertLambdaToSingleLine/simple2.kt b/idea/testData/intentions/convertLambdaToSingleLine/simple2.kt new file mode 100644 index 00000000000..6d4e3fc0d18 --- /dev/null +++ b/idea/testData/intentions/convertLambdaToSingleLine/simple2.kt @@ -0,0 +1,6 @@ +// WITH_RUNTIME +fun test(list: List) { + list.forEach { + println(it) + } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertLambdaToSingleLine/simple2.kt.after b/idea/testData/intentions/convertLambdaToSingleLine/simple2.kt.after new file mode 100644 index 00000000000..1da2a8aa178 --- /dev/null +++ b/idea/testData/intentions/convertLambdaToSingleLine/simple2.kt.after @@ -0,0 +1,4 @@ +// WITH_RUNTIME +fun test(list: List) { + list.forEach { println(it) } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertLambdaToSingleLine/simple3.kt b/idea/testData/intentions/convertLambdaToSingleLine/simple3.kt new file mode 100644 index 00000000000..05aefd6634c --- /dev/null +++ b/idea/testData/intentions/convertLambdaToSingleLine/simple3.kt @@ -0,0 +1,6 @@ +// WITH_RUNTIME +fun test(list: List) { + list.forEach { item -> + println(item) + } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertLambdaToSingleLine/simple3.kt.after b/idea/testData/intentions/convertLambdaToSingleLine/simple3.kt.after new file mode 100644 index 00000000000..8a9f870bf43 --- /dev/null +++ b/idea/testData/intentions/convertLambdaToSingleLine/simple3.kt.after @@ -0,0 +1,4 @@ +// WITH_RUNTIME +fun test(list: List) { + list.forEach { item -> println(item) } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertLambdaToSingleLine/simple4.kt b/idea/testData/intentions/convertLambdaToSingleLine/simple4.kt new file mode 100644 index 00000000000..d479450f835 --- /dev/null +++ b/idea/testData/intentions/convertLambdaToSingleLine/simple4.kt @@ -0,0 +1,6 @@ +// WITH_RUNTIME +fun test(list: List) { + list.forEach { item -> + println(item); println(item); println(item) /* comment */ + } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertLambdaToSingleLine/simple4.kt.after b/idea/testData/intentions/convertLambdaToSingleLine/simple4.kt.after new file mode 100644 index 00000000000..afcadde8ba7 --- /dev/null +++ b/idea/testData/intentions/convertLambdaToSingleLine/simple4.kt.after @@ -0,0 +1,4 @@ +// WITH_RUNTIME +fun test(list: List) { + list.forEach { item -> println(item); println(item); println(item) /* comment */ } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertLambdaToSingleLine/simple5.kt b/idea/testData/intentions/convertLambdaToSingleLine/simple5.kt new file mode 100644 index 00000000000..b175f907edd --- /dev/null +++ b/idea/testData/intentions/convertLambdaToSingleLine/simple5.kt @@ -0,0 +1,6 @@ +// WITH_RUNTIME +fun test(list: List) { + list.forEachIndexed { index, s -> + println(index) + } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertLambdaToSingleLine/simple5.kt.after b/idea/testData/intentions/convertLambdaToSingleLine/simple5.kt.after new file mode 100644 index 00000000000..5ae0106ab23 --- /dev/null +++ b/idea/testData/intentions/convertLambdaToSingleLine/simple5.kt.after @@ -0,0 +1,4 @@ +// WITH_RUNTIME +fun test(list: List) { + list.forEachIndexed { index, s -> println(index) } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertLambdaToSingleLine/simple6.kt b/idea/testData/intentions/convertLambdaToSingleLine/simple6.kt new file mode 100644 index 00000000000..7323b3f71c2 --- /dev/null +++ b/idea/testData/intentions/convertLambdaToSingleLine/simple6.kt @@ -0,0 +1,6 @@ +// WITH_RUNTIME +fun test(list: List>) { + list.forEach { (s, _) -> + println(s) + } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertLambdaToSingleLine/simple6.kt.after b/idea/testData/intentions/convertLambdaToSingleLine/simple6.kt.after new file mode 100644 index 00000000000..a5dd21bb79a --- /dev/null +++ b/idea/testData/intentions/convertLambdaToSingleLine/simple6.kt.after @@ -0,0 +1,4 @@ +// WITH_RUNTIME +fun test(list: List>) { + list.forEach { (s, _) -> println(s) } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertLambdaToSingleLine/singleLine.kt b/idea/testData/intentions/convertLambdaToSingleLine/singleLine.kt new file mode 100644 index 00000000000..fdf284ae877 --- /dev/null +++ b/idea/testData/intentions/convertLambdaToSingleLine/singleLine.kt @@ -0,0 +1,5 @@ +// IS_APPLICABLE: false +// WITH_RUNTIME +fun test(list: List) { + list.forEach { println(it) } +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java index fd695cf0434..61942395dc0 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java @@ -4692,6 +4692,54 @@ public class IntentionTestGenerated extends AbstractIntentionTest { } } + @TestMetadata("idea/testData/intentions/convertLambdaToMultiLine") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class ConvertLambdaToMultiLine extends AbstractIntentionTest { + private void runTest(String testDataFilePath) throws Exception { + KotlinTestUtils.runTest(this::doTest, this, testDataFilePath); + } + + public void testAllFilesPresentInConvertLambdaToMultiLine() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("idea/testData/intentions/convertLambdaToMultiLine"), Pattern.compile("^([\\w\\-_]+)\\.(kt|kts)$"), null, true); + } + + @TestMetadata("multiLine.kt") + public void testMultiLine() throws Exception { + runTest("idea/testData/intentions/convertLambdaToMultiLine/multiLine.kt"); + } + + @TestMetadata("simple.kt") + public void testSimple() throws Exception { + runTest("idea/testData/intentions/convertLambdaToMultiLine/simple.kt"); + } + + @TestMetadata("simple2.kt") + public void testSimple2() throws Exception { + runTest("idea/testData/intentions/convertLambdaToMultiLine/simple2.kt"); + } + + @TestMetadata("simple3.kt") + public void testSimple3() throws Exception { + runTest("idea/testData/intentions/convertLambdaToMultiLine/simple3.kt"); + } + + @TestMetadata("simple4.kt") + public void testSimple4() throws Exception { + runTest("idea/testData/intentions/convertLambdaToMultiLine/simple4.kt"); + } + + @TestMetadata("simple5.kt") + public void testSimple5() throws Exception { + runTest("idea/testData/intentions/convertLambdaToMultiLine/simple5.kt"); + } + + @TestMetadata("simple6.kt") + public void testSimple6() throws Exception { + runTest("idea/testData/intentions/convertLambdaToMultiLine/simple6.kt"); + } + } + @TestMetadata("idea/testData/intentions/convertLambdaToReference") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class) @@ -5050,6 +5098,74 @@ public class IntentionTestGenerated extends AbstractIntentionTest { } } + @TestMetadata("idea/testData/intentions/convertLambdaToSingleLine") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class ConvertLambdaToSingleLine extends AbstractIntentionTest { + private void runTest(String testDataFilePath) throws Exception { + KotlinTestUtils.runTest(this::doTest, this, testDataFilePath); + } + + public void testAllFilesPresentInConvertLambdaToSingleLine() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("idea/testData/intentions/convertLambdaToSingleLine"), Pattern.compile("^([\\w\\-_]+)\\.(kt|kts)$"), null, true); + } + + @TestMetadata("hasEolComment.kt") + public void testHasEolComment() throws Exception { + runTest("idea/testData/intentions/convertLambdaToSingleLine/hasEolComment.kt"); + } + + @TestMetadata("multiLineBody.kt") + public void testMultiLineBody() throws Exception { + runTest("idea/testData/intentions/convertLambdaToSingleLine/multiLineBody.kt"); + } + + @TestMetadata("multiLineBody2.kt") + public void testMultiLineBody2() throws Exception { + runTest("idea/testData/intentions/convertLambdaToSingleLine/multiLineBody2.kt"); + } + + @TestMetadata("multiLineBody3.kt") + public void testMultiLineBody3() throws Exception { + runTest("idea/testData/intentions/convertLambdaToSingleLine/multiLineBody3.kt"); + } + + @TestMetadata("simple.kt") + public void testSimple() throws Exception { + runTest("idea/testData/intentions/convertLambdaToSingleLine/simple.kt"); + } + + @TestMetadata("simple2.kt") + public void testSimple2() throws Exception { + runTest("idea/testData/intentions/convertLambdaToSingleLine/simple2.kt"); + } + + @TestMetadata("simple3.kt") + public void testSimple3() throws Exception { + runTest("idea/testData/intentions/convertLambdaToSingleLine/simple3.kt"); + } + + @TestMetadata("simple4.kt") + public void testSimple4() throws Exception { + runTest("idea/testData/intentions/convertLambdaToSingleLine/simple4.kt"); + } + + @TestMetadata("simple5.kt") + public void testSimple5() throws Exception { + runTest("idea/testData/intentions/convertLambdaToSingleLine/simple5.kt"); + } + + @TestMetadata("simple6.kt") + public void testSimple6() throws Exception { + runTest("idea/testData/intentions/convertLambdaToSingleLine/simple6.kt"); + } + + @TestMetadata("singleLine.kt") + public void testSingleLine() throws Exception { + runTest("idea/testData/intentions/convertLambdaToSingleLine/singleLine.kt"); + } + } + @TestMetadata("idea/testData/intentions/convertLateinitPropertyToNullable") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class)