From 4b9af8fc7b3fb44c9e36de5462d083f5d2a3446b Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Mon, 20 Mar 2023 12:27:36 +0100 Subject: [PATCH] [java-intentions] ConvertSwitchToIfIntention: avoid duplicating comments when extracting side effect GitOrigin-RevId: a76e34111f7a733071d2397e0a9c0a0a4d51d175 --- .../daemon/impl/quickfix/ConvertSwitchToIfIntention.java | 1 + .../switchDefault/afterEmptySideEffectComments.java | 9 +++++++++ .../switchDefault/beforeEmptySideEffectComments.java | 9 +++++++++ 3 files changed, 19 insertions(+) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/switchDefault/afterEmptySideEffectComments.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/switchDefault/beforeEmptySideEffectComments.java diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ConvertSwitchToIfIntention.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ConvertSwitchToIfIntention.java index 713e7681ecb1..8a435867228c 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ConvertSwitchToIfIntention.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ConvertSwitchToIfIntention.java @@ -193,6 +193,7 @@ public class ConvertSwitchToIfIntention implements IntentionActionWithFixAllOpti JavaCodeStyleManager javaCodeStyleManager = JavaCodeStyleManager.getInstance(project); if (hadSideEffects) { if (declarationString == null) { + sideEffectExpressions.forEach(commentTracker::markUnchanged); PsiStatement[] statements = StatementExtractor.generateStatements(sideEffectExpressions, switchExpression); for (PsiStatement statement : statements) { javaCodeStyleManager.shortenClassReferences(parent.addBefore(statement, switchStatement)); diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/switchDefault/afterEmptySideEffectComments.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/switchDefault/afterEmptySideEffectComments.java new file mode 100644 index 000000000000..0697e88aac58 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/switchDefault/afterEmptySideEffectComments.java @@ -0,0 +1,9 @@ +// "Unwrap 'switch'" "true-preview" +class X { + void test(int i) { + int x; + x = ((--i/*text*/) + "1" + (++i) + "1"); + System.out.println("1"); + ; + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/switchDefault/beforeEmptySideEffectComments.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/switchDefault/beforeEmptySideEffectComments.java new file mode 100644 index 000000000000..7b23a35e5cc3 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/switchDefault/beforeEmptySideEffectComments.java @@ -0,0 +1,9 @@ +// "Unwrap 'switch'" "true-preview" +class X { + void test(int i) { + int x; + switch ("1" + (x= ((--i/*text*/) + "1" + (++i) + "1"))) { + default -> System.out.println("1"); + }; + } +} \ No newline at end of file