From f6965b50046e32f03024eb695c518485ba9e676a Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Fri, 26 Jun 2015 14:19:25 +0300 Subject: [PATCH] PSI: Add parentheses around annotated expressions in returns #KT-8260 Fixed --- .../src/org/jetbrains/kotlin/psi/JetPsiUtil.java | 5 ++--- .../intentions/convertToBlockBody/annotatedExpr.kt | 3 +++ .../convertToBlockBody/annotatedExpr.kt.after | 5 +++++ .../intentions/convertToBlockBody/labeledExpr.kt | 1 + .../convertToBlockBody/labeledExpr.kt.after | 3 +++ .../idea/intentions/IntentionTestGenerated.java | 12 ++++++++++++ 6 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 idea/testData/intentions/convertToBlockBody/annotatedExpr.kt create mode 100644 idea/testData/intentions/convertToBlockBody/annotatedExpr.kt.after create mode 100644 idea/testData/intentions/convertToBlockBody/labeledExpr.kt create mode 100644 idea/testData/intentions/convertToBlockBody/labeledExpr.kt.after diff --git a/compiler/frontend/src/org/jetbrains/kotlin/psi/JetPsiUtil.java b/compiler/frontend/src/org/jetbrains/kotlin/psi/JetPsiUtil.java index 0f0c10ab1a5..54ddd225259 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/psi/JetPsiUtil.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/psi/JetPsiUtil.java @@ -549,9 +549,8 @@ public class JetPsiUtil { IElementType parentOperation = getOperation(parentExpression); // 'return (@label{...})' case - if (parentExpression instanceof JetReturnExpression && innerExpression instanceof JetLabeledExpression) { - return true; - } + if (parentExpression instanceof JetReturnExpression + && (innerExpression instanceof JetLabeledExpression || innerExpression instanceof JetAnnotatedExpression)) return true; // '(x: Int) < y' case if (innerExpression instanceof JetBinaryExpressionWithTypeRHS && parentOperation == JetTokens.LT) { diff --git a/idea/testData/intentions/convertToBlockBody/annotatedExpr.kt b/idea/testData/intentions/convertToBlockBody/annotatedExpr.kt new file mode 100644 index 00000000000..11f52949590 --- /dev/null +++ b/idea/testData/intentions/convertToBlockBody/annotatedExpr.kt @@ -0,0 +1,3 @@ +annotation class ann + +fun foo(): Int = @ann 1 \ No newline at end of file diff --git a/idea/testData/intentions/convertToBlockBody/annotatedExpr.kt.after b/idea/testData/intentions/convertToBlockBody/annotatedExpr.kt.after new file mode 100644 index 00000000000..ddc10faa4b3 --- /dev/null +++ b/idea/testData/intentions/convertToBlockBody/annotatedExpr.kt.after @@ -0,0 +1,5 @@ +annotation class ann + +fun foo(): Int { + return (@ann 1) +} \ No newline at end of file diff --git a/idea/testData/intentions/convertToBlockBody/labeledExpr.kt b/idea/testData/intentions/convertToBlockBody/labeledExpr.kt new file mode 100644 index 00000000000..0df44947c9e --- /dev/null +++ b/idea/testData/intentions/convertToBlockBody/labeledExpr.kt @@ -0,0 +1 @@ +fun foo(): Int = ann@ 1 \ No newline at end of file diff --git a/idea/testData/intentions/convertToBlockBody/labeledExpr.kt.after b/idea/testData/intentions/convertToBlockBody/labeledExpr.kt.after new file mode 100644 index 00000000000..1366f108bca --- /dev/null +++ b/idea/testData/intentions/convertToBlockBody/labeledExpr.kt.after @@ -0,0 +1,3 @@ +fun foo(): Int { + return (ann@ 1) +} \ 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 853be2304f2..5c8a15df2ab 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java @@ -3523,6 +3523,12 @@ public class IntentionTestGenerated extends AbstractIntentionTest { JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/intentions/convertToBlockBody"), Pattern.compile("^([\\w\\-_]+)\\.kt$"), true); } + @TestMetadata("annotatedExpr.kt") + public void testAnnotatedExpr() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/convertToBlockBody/annotatedExpr.kt"); + doTest(fileName); + } + @TestMetadata("explicitlyNonUnitFun.kt") public void testExplicitlyNonUnitFun() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/convertToBlockBody/explicitlyNonUnitFun.kt"); @@ -3589,6 +3595,12 @@ public class IntentionTestGenerated extends AbstractIntentionTest { doTest(fileName); } + @TestMetadata("labeledExpr.kt") + public void testLabeledExpr() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/convertToBlockBody/labeledExpr.kt"); + doTest(fileName); + } + @TestMetadata("nothingFun.kt") public void testNothingFun() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/convertToBlockBody/nothingFun.kt");