preserve comments: split declarations

This commit is contained in:
Anna.Kozlova
2017-12-01 18:19:49 +01:00
parent 807fd2b579
commit 97535d8271
3 changed files with 21 additions and 2 deletions
@@ -27,6 +27,7 @@ import com.intellij.psi.javadoc.PsiDocComment;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.refactoring.util.RefactoringUtil;
import com.intellij.util.IncorrectOperationException;
import com.siyeh.ig.psiutils.CommentTracker;
import org.jetbrains.annotations.NotNull;
/**
@@ -147,11 +148,12 @@ public class SplitDeclarationAction extends PsiElementBaseIntentionAction {
.createStatementFromText(var.getName() + "=xxx;", null);
statement = (PsiExpressionStatement)CodeStyleManager.getInstance(project).reformat(statement);
PsiAssignmentExpression assignment = (PsiAssignmentExpression)statement.getExpression();
CommentTracker commentTracker = new CommentTracker();
PsiExpression initializer = var.getInitializer();
PsiExpression rExpression = RefactoringUtil.convertInitializerToNormalExpression(initializer, var.getType());
assignment.getRExpression().replace(rExpression);
initializer.delete();
commentTracker.replace(assignment.getRExpression(), rExpression);
commentTracker.deleteAndRestoreComments(initializer);
PsiElement block = decl.getParent();
if (block instanceof PsiForStatement) {
@@ -0,0 +1,9 @@
// "Split into declaration and assignment" "true"
import java.util.*;
class Test {
{
List<String> l //end line comment
;
l = new ArrayList<>();
}
}
@@ -0,0 +1,8 @@
// "Split into declaration and assignment" "true"
import java.util.*;
class Test {
{
List<String> l <caret>= new ArrayList//end line comment
<>();
}
}