From ffda2a4aae17f8ecf818352f6377dbaf2ac43fea Mon Sep 17 00:00:00 2001 From: Andrey Cherkasov Date: Mon, 3 Jun 2024 14:51:25 +0400 Subject: [PATCH] [kotlin k2] AddReturnExpressionFix: do not suggest a quick fix if there is no right bracket ^KTIJ-29554 GitOrigin-RevId: aa9488718babe674febfeb7cff83ddefc9a60442 --- .../k2/codeinsight/fixes/AddReturnExpressionFixFactory.kt | 1 + .../k2/codeinsight/fixes/HighLevelQuickFixTestGenerated.java | 5 +++++ .../kotlin/idea/quickfix/K1QuickFixTestGenerated.java | 5 +++++ .../testData/quickfix/addReturnExpression/noRightBrace.kt | 4 ++++ 4 files changed, 15 insertions(+) create mode 100644 plugins/kotlin/idea/tests/testData/quickfix/addReturnExpression/noRightBrace.kt diff --git a/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/AddReturnExpressionFixFactory.kt b/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/AddReturnExpressionFixFactory.kt index 6f1650e1fafd..53413a09006f 100644 --- a/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/AddReturnExpressionFixFactory.kt +++ b/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/AddReturnExpressionFixFactory.kt @@ -10,6 +10,7 @@ internal object AddReturnExpressionFixFactory { val addReturnExpressionFixFactory = KotlinQuickFixFactory.ModCommandBased { diagnostic: KaFirDiagnostic.NoReturnInFunctionWithBlockBody -> val function = (diagnostic.psi as? KtNamedFunction) ?: return@ModCommandBased emptyList() + if (function.bodyBlockExpression?.rBrace == null) return@ModCommandBased emptyList() listOf( AddReturnExpressionFix(function) diff --git a/plugins/kotlin/code-insight/fixes-k2/tests/test/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/HighLevelQuickFixTestGenerated.java b/plugins/kotlin/code-insight/fixes-k2/tests/test/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/HighLevelQuickFixTestGenerated.java index 93dfe1505800..d3c745c01d54 100644 --- a/plugins/kotlin/code-insight/fixes-k2/tests/test/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/HighLevelQuickFixTestGenerated.java +++ b/plugins/kotlin/code-insight/fixes-k2/tests/test/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/HighLevelQuickFixTestGenerated.java @@ -5257,6 +5257,11 @@ public abstract class HighLevelQuickFixTestGenerated extends AbstractHighLevelQu runTest("../../../idea/tests/testData/quickfix/addReturnExpression/emptyBody.kt"); } + @TestMetadata("noRightBrace.kt") + public void testNoRightBrace() throws Exception { + runTest("../../../idea/tests/testData/quickfix/addReturnExpression/noRightBrace.kt"); + } + @TestMetadata("simple.kt") public void testSimple() throws Exception { runTest("../../../idea/tests/testData/quickfix/addReturnExpression/simple.kt"); diff --git a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/quickfix/K1QuickFixTestGenerated.java b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/quickfix/K1QuickFixTestGenerated.java index 5bc6df133cb8..4aff48cf2e56 100644 --- a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/quickfix/K1QuickFixTestGenerated.java +++ b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/quickfix/K1QuickFixTestGenerated.java @@ -1599,6 +1599,11 @@ public abstract class K1QuickFixTestGenerated extends AbstractK1QuickFixTest { runTest("testData/quickfix/addReturnExpression/emptyBody.kt"); } + @TestMetadata("noRightBrace.kt") + public void testNoRightBrace() throws Exception { + runTest("testData/quickfix/addReturnExpression/noRightBrace.kt"); + } + @TestMetadata("simple.kt") public void testSimple() throws Exception { runTest("testData/quickfix/addReturnExpression/simple.kt"); diff --git a/plugins/kotlin/idea/tests/testData/quickfix/addReturnExpression/noRightBrace.kt b/plugins/kotlin/idea/tests/testData/quickfix/addReturnExpression/noRightBrace.kt new file mode 100644 index 000000000000..25e933b1b4e6 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/quickfix/addReturnExpression/noRightBrace.kt @@ -0,0 +1,4 @@ +// "Add 'return' expression" "false" +// ERROR: A 'return' expression required in a function with a block body ('{...}') +fun test(): Boolean { + val x = 42 \ No newline at end of file