mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-05-06 05:10:22 +07:00
fix operation assignment (IDEA-143986)
This commit is contained in:
@@ -104,6 +104,12 @@ public class DeclarationJoinLinesHandler implements JoinLinesHandlerDelegate {
|
||||
|
||||
public static PsiExpression getInitializerExpression(PsiLocalVariable var,
|
||||
PsiAssignmentExpression assignment) {
|
||||
return getInitializerExpression(var.getInitializer(),
|
||||
assignment);
|
||||
}
|
||||
|
||||
public static PsiExpression getInitializerExpression(PsiExpression initializer,
|
||||
PsiAssignmentExpression assignment) {
|
||||
PsiExpression initializerExpression;
|
||||
final IElementType originalOpSign = assignment.getOperationTokenType();
|
||||
final PsiExpression rExpression = assignment.getRExpression();
|
||||
@@ -111,7 +117,7 @@ public class DeclarationJoinLinesHandler implements JoinLinesHandlerDelegate {
|
||||
initializerExpression = rExpression;
|
||||
}
|
||||
else {
|
||||
if (var.getInitializer() == null) return null;
|
||||
if (initializer == null) return null;
|
||||
String opSign = null;
|
||||
if (originalOpSign == JavaTokenType.ANDEQ) {
|
||||
opSign = "&";
|
||||
@@ -148,8 +154,8 @@ public class DeclarationJoinLinesHandler implements JoinLinesHandlerDelegate {
|
||||
}
|
||||
|
||||
try {
|
||||
final Project project = var.getProject();
|
||||
String initializerText = var.getInitializer().getText() + opSign;
|
||||
final Project project = assignment.getProject();
|
||||
String initializerText = initializer.getText() + opSign;
|
||||
final String rightText = rExpression.getText();
|
||||
if (ParenthesesUtils.areParenthesesNeeded(assignment.getOperationSign(), rExpression)) {
|
||||
initializerText += "(" + rightText + ")";
|
||||
@@ -157,7 +163,7 @@ public class DeclarationJoinLinesHandler implements JoinLinesHandlerDelegate {
|
||||
else {
|
||||
initializerText += rightText;
|
||||
}
|
||||
initializerExpression = JavaPsiFacade.getElementFactory(project).createExpressionFromText(initializerText, var);
|
||||
initializerExpression = JavaPsiFacade.getElementFactory(project).createExpressionFromText(initializerText, assignment);
|
||||
initializerExpression = (PsiExpression)CodeStyleManager.getInstance(project).reformat(initializerExpression);
|
||||
}
|
||||
catch (IncorrectOperationException e) {
|
||||
|
||||
@@ -16,8 +16,10 @@
|
||||
package com.intellij.codeInspection;
|
||||
|
||||
import com.intellij.codeInsight.FileModificationService;
|
||||
import com.intellij.codeInsight.editorActions.DeclarationJoinLinesHandler;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -38,7 +40,12 @@ public class RemoveAssignmentFix extends RemoveInitializerFix {
|
||||
parent = element;
|
||||
}
|
||||
if (!(parent instanceof PsiAssignmentExpression)) return;
|
||||
final PsiExpression rExpression = ((PsiAssignmentExpression)parent).getRExpression();
|
||||
final IElementType operationSign = ((PsiAssignmentExpression)parent).getOperationTokenType();
|
||||
PsiExpression rExpression = ((PsiAssignmentExpression)parent).getRExpression();
|
||||
if (JavaTokenType.EQ != operationSign && rExpression != null ) {
|
||||
rExpression = DeclarationJoinLinesHandler.getInitializerExpression(((PsiAssignmentExpression)parent).getLExpression(),
|
||||
(PsiAssignmentExpression)parent);
|
||||
}
|
||||
final PsiElement gParent = parent.getParent();
|
||||
if ((gParent instanceof PsiExpression || gParent instanceof PsiExpressionList || gParent instanceof PsiReturnStatement) && rExpression != null) {
|
||||
if (!FileModificationService.getInstance().prepareFileForWrite(gParent.getContainingFile())) return;
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
// "Remove redundant assignment" "true"
|
||||
class A {
|
||||
public String getContexts(final String env) {
|
||||
String contexts = "a";
|
||||
if ("dev".equals(env)) {
|
||||
return contexts + ",b";
|
||||
}
|
||||
return contexts;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
// "Remove redundant assignment" "true"
|
||||
class A {
|
||||
public String getContexts(final String env) {
|
||||
String contexts = "a";
|
||||
if ("dev".equals(env)) {
|
||||
return cont<caret>exts += ",b";
|
||||
}
|
||||
return contexts;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user