From ed0eda2fbb25f8c21ffffee3114b3c29700adf98 Mon Sep 17 00:00:00 2001 From: Artemiy Sartakov Date: Tue, 17 Sep 2019 00:10:13 +0700 Subject: [PATCH] ManualMinMaxCalculationInspection: remove implicit else branch during replacement (IDEA-221837) GitOrigin-RevId: 68d542bcaa2ccaffa7b8b82a2f5a909ae08d2fd6 --- .../ManualMinMaxCalculationInspection.java | 4 ++++ .../afterIfWithImplicitElse.java | 8 ++++++++ .../beforeIfWithImplicitElse.java | 10 ++++++++++ 3 files changed, 22 insertions(+) create mode 100644 java/java-tests/testData/inspection/manualMinMaxCalculation/afterIfWithImplicitElse.java create mode 100644 java/java-tests/testData/inspection/manualMinMaxCalculation/beforeIfWithImplicitElse.java diff --git a/java/java-impl/src/com/intellij/codeInspection/ManualMinMaxCalculationInspection.java b/java/java-impl/src/com/intellij/codeInspection/ManualMinMaxCalculationInspection.java index a6e1c8074c20..8c9af61f5904 100644 --- a/java/java-impl/src/com/intellij/codeInspection/ManualMinMaxCalculationInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/ManualMinMaxCalculationInspection.java @@ -140,6 +140,10 @@ public class ManualMinMaxCalculationInspection extends AbstractBaseJavaLocalInsp CommentTracker tracker = new CommentTracker(); PsiStatement thenBranch = model.getThenBranch(); tracker.text(thenBranch); + PsiStatement elseBranch = model.getElseBranch(); + if (!PsiTreeUtil.isAncestor(ifStatement, elseBranch, true)) { + new CommentTracker().deleteAndRestoreComments(elseBranch); + } PsiElement result = PsiReplacementUtil.replaceStatement(ifStatement, thenBranch.getText(), tracker); SimplifiableIfStatementInspection.tryJoinDeclaration(result); } diff --git a/java/java-tests/testData/inspection/manualMinMaxCalculation/afterIfWithImplicitElse.java b/java/java-tests/testData/inspection/manualMinMaxCalculation/afterIfWithImplicitElse.java new file mode 100644 index 000000000000..6a4f15ac3236 --- /dev/null +++ b/java/java-tests/testData/inspection/manualMinMaxCalculation/afterIfWithImplicitElse.java @@ -0,0 +1,8 @@ +// "Replace with 'Math.min'" "true" +class Test { + + public int mymin(int a, int b) { + return Math.min(a, b); + /*comment*/ + } +} \ No newline at end of file diff --git a/java/java-tests/testData/inspection/manualMinMaxCalculation/beforeIfWithImplicitElse.java b/java/java-tests/testData/inspection/manualMinMaxCalculation/beforeIfWithImplicitElse.java new file mode 100644 index 000000000000..cf0a55ba4ed6 --- /dev/null +++ b/java/java-tests/testData/inspection/manualMinMaxCalculation/beforeIfWithImplicitElse.java @@ -0,0 +1,10 @@ +// "Replace with 'Math.min'" "true" +class Test { + + public int mymin(int a, int b) { + if(a < b) { + return a; + } + return (/*comment*/(b)); + } +} \ No newline at end of file