From fb19e2ef1391f60df6169aba94f28b7e9c2578cc Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Thu, 24 Jan 2019 13:22:55 +0100 Subject: [PATCH] switch expressions: don't add additional parenthesis on replacements inside switch expression found by property testing --- .../psi/impl/source/tree/java/ReplaceExpressionUtil.java | 3 ++- .../postfix_prefix/PrefixExpressionInSwitchExprJava12.java | 7 +++++++ .../PrefixExpressionInSwitchExprJava12_after.java | 7 +++++++ .../com/siyeh/ipp/opassign/PostfixPrefixIntentionTest.java | 1 + 4 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 plugins/IntentionPowerPak/test/com/siyeh/ipp/opassign/postfix_prefix/PrefixExpressionInSwitchExprJava12.java create mode 100644 plugins/IntentionPowerPak/test/com/siyeh/ipp/opassign/postfix_prefix/PrefixExpressionInSwitchExprJava12_after.java diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/ReplaceExpressionUtil.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/ReplaceExpressionUtil.java index 64ab3907c4bd..afc1240ba47f 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/ReplaceExpressionUtil.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/ReplaceExpressionUtil.java @@ -72,7 +72,8 @@ public class ReplaceExpressionUtil { i == JavaElementType.THIS_EXPRESSION || i == JavaElementType.SUPER_EXPRESSION || i == JavaElementType.CLASS_OBJECT_ACCESS_EXPRESSION || - i == JavaElementType.LAMBDA_EXPRESSION) { + i == JavaElementType.LAMBDA_EXPRESSION || + i == JavaElementType.SWITCH_EXPRESSION) { return false; } diff --git a/plugins/IntentionPowerPak/test/com/siyeh/ipp/opassign/postfix_prefix/PrefixExpressionInSwitchExprJava12.java b/plugins/IntentionPowerPak/test/com/siyeh/ipp/opassign/postfix_prefix/PrefixExpressionInSwitchExprJava12.java new file mode 100644 index 000000000000..ba55c7443b3b --- /dev/null +++ b/plugins/IntentionPowerPak/test/com/siyeh/ipp/opassign/postfix_prefix/PrefixExpressionInSwitchExprJava12.java @@ -0,0 +1,7 @@ +class PrefixExpression { + void m(int i) { + int j = switch(++i) { + default -> 7; + }; + } +} \ No newline at end of file diff --git a/plugins/IntentionPowerPak/test/com/siyeh/ipp/opassign/postfix_prefix/PrefixExpressionInSwitchExprJava12_after.java b/plugins/IntentionPowerPak/test/com/siyeh/ipp/opassign/postfix_prefix/PrefixExpressionInSwitchExprJava12_after.java new file mode 100644 index 000000000000..81de5bf4b6fc --- /dev/null +++ b/plugins/IntentionPowerPak/test/com/siyeh/ipp/opassign/postfix_prefix/PrefixExpressionInSwitchExprJava12_after.java @@ -0,0 +1,7 @@ +class PrefixExpression { + void m(int i) { + int j = switch(i++) { + default -> 7; + }; + } +} \ No newline at end of file diff --git a/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/opassign/PostfixPrefixIntentionTest.java b/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/opassign/PostfixPrefixIntentionTest.java index b625516a1635..5cf370cda7e1 100644 --- a/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/opassign/PostfixPrefixIntentionTest.java +++ b/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/opassign/PostfixPrefixIntentionTest.java @@ -24,6 +24,7 @@ import com.siyeh.ipp.IPPTestCase; public class PostfixPrefixIntentionTest extends IPPTestCase { public void testSimple() { doTest(); } public void testPrefixExpression() { doTest(CommonQuickFixBundle.message("fix.replace.with.x", "i++")); } + public void testPrefixExpressionInSwitchExprJava12() { doTest(CommonQuickFixBundle.message("fix.replace.with.x", "i++")); } public void testIncomplete() { assertIntentionNotAvailable(); } public void testUnaryExpression() { assertIntentionNotAvailable(); }