diff --git a/compiler/psi/src/org/jetbrains/kotlin/psi/KtPsiUtil.java b/compiler/psi/src/org/jetbrains/kotlin/psi/KtPsiUtil.java index fe5bbc31771..9ee9cf61a0c 100644 --- a/compiler/psi/src/org/jetbrains/kotlin/psi/KtPsiUtil.java +++ b/compiler/psi/src/org/jetbrains/kotlin/psi/KtPsiUtil.java @@ -534,9 +534,16 @@ public class KtPsiUtil { return ((KtBinaryExpression) parentElement).getRight() == currentInner; } - //'-(-x)' case if (parentElement instanceof KtPrefixExpression && innerExpression instanceof KtPrefixExpression) { - return innerOperation == parentOperation && (innerOperation == KtTokens.PLUS || innerOperation == KtTokens.MINUS); + // +(++x) or +(+x) case + if (parentOperation == KtTokens.PLUS) { + return innerOperation == KtTokens.PLUS || innerOperation == KtTokens.PLUSPLUS; + } + + // -(--x) or -(-x) case + if (parentOperation == KtTokens.MINUS) { + return innerOperation == KtTokens.MINUS || innerOperation == KtTokens.MINUSMINUS; + } } return false; } diff --git a/idea/testData/intentions/removeUnnecessaryParentheses/necessaryParentheses6.kt b/idea/testData/intentions/removeUnnecessaryParentheses/necessaryParentheses6.kt new file mode 100644 index 00000000000..d2c3d0b22d7 --- /dev/null +++ b/idea/testData/intentions/removeUnnecessaryParentheses/necessaryParentheses6.kt @@ -0,0 +1,3 @@ +// IS_APPLICABLE: false +var x = 0 ++(++x) diff --git a/idea/testData/intentions/removeUnnecessaryParentheses/necessaryParentheses7.kt b/idea/testData/intentions/removeUnnecessaryParentheses/necessaryParentheses7.kt new file mode 100644 index 00000000000..8dbfd8bc00e --- /dev/null +++ b/idea/testData/intentions/removeUnnecessaryParentheses/necessaryParentheses7.kt @@ -0,0 +1,3 @@ +// IS_APPLICABLE: false +var x = 0 +-(--x) diff --git a/idea/testData/intentions/removeUnnecessaryParentheses/unnecessaryParentheses10.kt b/idea/testData/intentions/removeUnnecessaryParentheses/unnecessaryParentheses10.kt new file mode 100644 index 00000000000..b38e0fc8288 --- /dev/null +++ b/idea/testData/intentions/removeUnnecessaryParentheses/unnecessaryParentheses10.kt @@ -0,0 +1,4 @@ +fun foo() { + var x = 0 + +(--x) +} diff --git a/idea/testData/intentions/removeUnnecessaryParentheses/unnecessaryParentheses10.kt.after b/idea/testData/intentions/removeUnnecessaryParentheses/unnecessaryParentheses10.kt.after new file mode 100644 index 00000000000..45e03fec6cd --- /dev/null +++ b/idea/testData/intentions/removeUnnecessaryParentheses/unnecessaryParentheses10.kt.after @@ -0,0 +1,4 @@ +fun foo() { + var x = 0 + +--x +} diff --git a/idea/testData/intentions/removeUnnecessaryParentheses/unnecessaryParentheses9.kt b/idea/testData/intentions/removeUnnecessaryParentheses/unnecessaryParentheses9.kt new file mode 100644 index 00000000000..585d75d5c7f --- /dev/null +++ b/idea/testData/intentions/removeUnnecessaryParentheses/unnecessaryParentheses9.kt @@ -0,0 +1,4 @@ +fun foo() { + var x = 0 + -(++x) +} diff --git a/idea/testData/intentions/removeUnnecessaryParentheses/unnecessaryParentheses9.kt.after b/idea/testData/intentions/removeUnnecessaryParentheses/unnecessaryParentheses9.kt.after new file mode 100644 index 00000000000..d32389faf52 --- /dev/null +++ b/idea/testData/intentions/removeUnnecessaryParentheses/unnecessaryParentheses9.kt.after @@ -0,0 +1,4 @@ +fun foo() { + var x = 0 + -++x +} diff --git a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java index 0cbf9cf1910..832c9d45e6d 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java @@ -14004,11 +14004,26 @@ public class IntentionTestGenerated extends AbstractIntentionTest { runTest("idea/testData/intentions/removeUnnecessaryParentheses/necessaryParentheses5.kt"); } + @TestMetadata("necessaryParentheses6.kt") + public void testNecessaryParentheses6() throws Exception { + runTest("idea/testData/intentions/removeUnnecessaryParentheses/necessaryParentheses6.kt"); + } + + @TestMetadata("necessaryParentheses7.kt") + public void testNecessaryParentheses7() throws Exception { + runTest("idea/testData/intentions/removeUnnecessaryParentheses/necessaryParentheses7.kt"); + } + @TestMetadata("unnecessaryParentheses1.kt") public void testUnnecessaryParentheses1() throws Exception { runTest("idea/testData/intentions/removeUnnecessaryParentheses/unnecessaryParentheses1.kt"); } + @TestMetadata("unnecessaryParentheses10.kt") + public void testUnnecessaryParentheses10() throws Exception { + runTest("idea/testData/intentions/removeUnnecessaryParentheses/unnecessaryParentheses10.kt"); + } + @TestMetadata("unnecessaryParentheses2.kt") public void testUnnecessaryParentheses2() throws Exception { runTest("idea/testData/intentions/removeUnnecessaryParentheses/unnecessaryParentheses2.kt"); @@ -14044,6 +14059,11 @@ public class IntentionTestGenerated extends AbstractIntentionTest { runTest("idea/testData/intentions/removeUnnecessaryParentheses/unnecessaryParentheses8.kt"); } + @TestMetadata("unnecessaryParentheses9.kt") + public void testUnnecessaryParentheses9() throws Exception { + runTest("idea/testData/intentions/removeUnnecessaryParentheses/unnecessaryParentheses9.kt"); + } + @TestMetadata("unnecessaryParenthesesWithComment.kt") public void testUnnecessaryParenthesesWithComment() throws Exception { runTest("idea/testData/intentions/removeUnnecessaryParentheses/unnecessaryParenthesesWithComment.kt"); diff --git a/nj2k/testData/newJ2k/parenthesizedExpression/parenthesized3.java b/nj2k/testData/newJ2k/parenthesizedExpression/parenthesized3.java new file mode 100644 index 00000000000..856a1cc2e1e --- /dev/null +++ b/nj2k/testData/newJ2k/parenthesizedExpression/parenthesized3.java @@ -0,0 +1,2 @@ +//expression +-(++i)+(++i)-(--i)+(--i) diff --git a/nj2k/testData/newJ2k/parenthesizedExpression/parenthesized3.kt b/nj2k/testData/newJ2k/parenthesizedExpression/parenthesized3.kt new file mode 100644 index 00000000000..4395efddfb3 --- /dev/null +++ b/nj2k/testData/newJ2k/parenthesizedExpression/parenthesized3.kt @@ -0,0 +1 @@ +-++i + ++i - --i + --i diff --git a/nj2k/tests/org/jetbrains/kotlin/nj2k/NewJavaToKotlinConverterSingleFileTestGenerated.java b/nj2k/tests/org/jetbrains/kotlin/nj2k/NewJavaToKotlinConverterSingleFileTestGenerated.java index 02b220fd064..b659a604fef 100644 --- a/nj2k/tests/org/jetbrains/kotlin/nj2k/NewJavaToKotlinConverterSingleFileTestGenerated.java +++ b/nj2k/tests/org/jetbrains/kotlin/nj2k/NewJavaToKotlinConverterSingleFileTestGenerated.java @@ -4080,6 +4080,11 @@ public class NewJavaToKotlinConverterSingleFileTestGenerated extends AbstractNew public void testParenthesized2() throws Exception { runTest("nj2k/testData/newJ2k/parenthesizedExpression/parenthesized2.java"); } + + @TestMetadata("parenthesized3.java") + public void testParenthesized3() throws Exception { + runTest("nj2k/testData/newJ2k/parenthesizedExpression/parenthesized3.java"); + } } @TestMetadata("nj2k/testData/newJ2k/polyadicExpression")