From ae3afdbaf8b61e7f1cdbf89824292ec237b0bd20 Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Wed, 11 Jul 2018 12:56:46 +0200 Subject: [PATCH] switch -> if: fix comments line breaks (IDEA-195383) --- .../quickfix/ConvertSwitchToIfIntention.java | 16 +++++++++++----- .../quickFix/convertSwitchToIf/afterComment.java | 11 +++++++++++ .../convertSwitchToIf/beforeComment.java | 13 +++++++++++++ 3 files changed, 35 insertions(+), 5 deletions(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/convertSwitchToIf/afterComment.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/convertSwitchToIf/beforeComment.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 2f96c2affdce..641280fe3cd7 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 @@ -280,6 +280,8 @@ public class ConvertSwitchToIfIntention implements IntentionAction { out.append(variable.getType().getCanonicalText()).append(' ').append(variable.getName()).append(';'); } } + + boolean addLineBreak = true; for (PsiElement bodyStatement : bodyStatements) { if (bodyStatement instanceof PsiBlockStatement) { final PsiBlockStatement blockStatement = (PsiBlockStatement)bodyStatement; @@ -289,21 +291,25 @@ public class ConvertSwitchToIfIntention implements IntentionAction { } } else { - appendElement(bodyStatement, out, commentTracker); + addLineBreak = appendElement(bodyStatement, out, commentTracker); } } - out.append("\n}"); + if (addLineBreak) { + out.append("\n"); + } + out.append("}"); } - private static void appendElement(PsiElement element, @NonNls StringBuilder out, CommentTracker commentTracker) { - if (element instanceof PsiWhiteSpace) return; + private static boolean appendElement(PsiElement element, @NonNls StringBuilder out, CommentTracker commentTracker) { if (element instanceof PsiBreakStatement) { final PsiBreakStatement breakStatement = (PsiBreakStatement)element; final PsiIdentifier identifier = breakStatement.getLabelIdentifier(); if (identifier == null) { - return; + return false; } } out.append(commentTracker.text(element)); + + return true; } } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/convertSwitchToIf/afterComment.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/convertSwitchToIf/afterComment.java new file mode 100644 index 000000000000..9399bf47c860 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/convertSwitchToIf/afterComment.java @@ -0,0 +1,11 @@ +// "Replace 'switch' with 'if'" "true" +class X { + void test(int i) { + if (i == 1) {//foo + if (Math.random() > 0.5) { + System.out.println("Hello"); + } + } + } + +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/convertSwitchToIf/beforeComment.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/convertSwitchToIf/beforeComment.java new file mode 100644 index 000000000000..dec27c591867 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/convertSwitchToIf/beforeComment.java @@ -0,0 +1,13 @@ +// "Replace 'switch' with 'if'" "true" +class X { + void test(int i) { + switch (i) { + case 1: + //foo + if (Math.random() > 0.5) { + System.out.println("Hello"); + } + } + } + +} \ No newline at end of file