From 7b5dcb3d806feb716c8c3bd92c03616cd1bd558d Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Tue, 29 Oct 2019 10:04:10 +0700 Subject: [PATCH] DeclarationJoinLinesHandler#joinDeclarationAndAssignment GitOrigin-RevId: 6eee7012c7bdb46c8d5459f07fde28be0e7f4726 --- .../DeclarationJoinLinesHandler.java | 26 +++++++++++++++++++ ...eclarationAndAssignmentJavaInspection.java | 20 +------------- 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/editorActions/DeclarationJoinLinesHandler.java b/java/java-impl/src/com/intellij/codeInsight/editorActions/DeclarationJoinLinesHandler.java index 6beb339278e9..40743c4d91dc 100644 --- a/java/java-impl/src/com/intellij/codeInsight/editorActions/DeclarationJoinLinesHandler.java +++ b/java/java-impl/src/com/intellij/codeInsight/editorActions/DeclarationJoinLinesHandler.java @@ -27,6 +27,7 @@ import com.intellij.psi.util.PsiPrecedenceUtil; import com.intellij.psi.util.TypeConversionUtil; import com.intellij.util.IncorrectOperationException; import com.intellij.util.containers.ContainerUtil; +import com.siyeh.ig.psiutils.CommentTracker; import com.siyeh.ig.psiutils.ExpressionUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -165,4 +166,29 @@ public class DeclarationJoinLinesHandler implements JoinLinesHandlerDelegate { } return varCopy; } + + /** + * Join declaration and assignment + * @param variable variable + * @param assignment assignment (assuming its parent is expression statement) + * @return new variable + */ + public static PsiLocalVariable joinDeclarationAndAssignment(@NotNull PsiLocalVariable variable, @NotNull PsiAssignmentExpression assignment) { + PsiExpression initializer = getInitializerExpression(variable, assignment); + PsiElement elementToReplace = assignment.getParent(); + if (elementToReplace != null) { + PsiLocalVariable varCopy = copyVarWithInitializer(variable, initializer); + if (varCopy != null) { + String text = varCopy.getText(); + + CommentTracker tracker = new CommentTracker(); + tracker.markUnchanged(initializer); + tracker.markUnchanged(variable); + tracker.delete(variable); + PsiDeclarationStatement decl = (PsiDeclarationStatement)tracker.replaceAndRestoreComments(elementToReplace, text); + return ((PsiLocalVariable)decl.getDeclaredElements()[0]); + } + } + return variable; + } } diff --git a/java/java-impl/src/com/intellij/codeInspection/JoinDeclarationAndAssignmentJavaInspection.java b/java/java-impl/src/com/intellij/codeInspection/JoinDeclarationAndAssignmentJavaInspection.java index fa459fa4cd6e..928357cdcd83 100644 --- a/java/java-impl/src/com/intellij/codeInspection/JoinDeclarationAndAssignmentJavaInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/JoinDeclarationAndAssignmentJavaInspection.java @@ -11,7 +11,6 @@ import com.intellij.psi.util.PsiExpressionTrimRenderer; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiUtil; import com.intellij.util.ObjectUtils; -import com.siyeh.ig.psiutils.CommentTracker; import com.siyeh.ig.psiutils.ExpressionUtils; import com.siyeh.ig.psiutils.SideEffectChecker; import org.jetbrains.annotations.Contract; @@ -226,24 +225,7 @@ public class JoinDeclarationAndAssignmentJavaInspection extends AbstractBaseJava } if (!FileModificationService.getInstance().prepareFileForWrite(assignmentExpression.getContainingFile())) return; - WriteAction.run(() -> applyFixImpl(context)); - } - } - - public void applyFixImpl(@NotNull Context context) { - PsiExpression initializer = DeclarationJoinLinesHandler.getInitializerExpression(context.myVariable, context.myAssignment); - PsiElement elementToReplace = context.myAssignment.getParent(); - if (elementToReplace != null) { - PsiLocalVariable varCopy = DeclarationJoinLinesHandler.copyVarWithInitializer(context.myVariable, initializer); - if (varCopy != null) { - String text = varCopy.getText(); - - CommentTracker tracker = new CommentTracker(); - tracker.markUnchanged(initializer); - tracker.markUnchanged(context.myVariable); - tracker.delete(context.myVariable); - tracker.replaceAndRestoreComments(elementToReplace, text); - } + WriteAction.run(() -> DeclarationJoinLinesHandler.joinDeclarationAndAssignment(context.myVariable, context.myAssignment)); } } }