mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Reduced copy-paste logic to check PsiElement being increment/decrement or used in write
This commit is contained in:
@@ -36,7 +36,6 @@ import com.intellij.openapi.wm.WindowManager;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.controlFlow.DefUseUtil;
|
||||
import com.intellij.psi.search.searches.ReferencesSearch;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.psi.util.PsiUtilCore;
|
||||
@@ -46,6 +45,7 @@ import com.intellij.refactoring.listeners.RefactoringEventData;
|
||||
import com.intellij.refactoring.listeners.RefactoringEventListener;
|
||||
import com.intellij.refactoring.util.CommonRefactoringUtil;
|
||||
import com.intellij.refactoring.util.InlineUtil;
|
||||
import com.intellij.refactoring.util.RefactoringUtil;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.Query;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
@@ -295,29 +295,15 @@ public class InlineLocalHandler extends JavaInlineActionHandler {
|
||||
if (((PsiArrayAccessExpression)parent).getIndexExpression() == element) continue;
|
||||
if (defToInline instanceof PsiExpression && !(defToInline instanceof PsiNewExpression)) continue;
|
||||
element = parent;
|
||||
parent = parent.getParent();
|
||||
}
|
||||
|
||||
if (parent instanceof PsiAssignmentExpression && element == ((PsiAssignmentExpression)parent).getLExpression()
|
||||
|| isUnaryWriteExpression(parent)) {
|
||||
|
||||
if (RefactoringUtil.isAssignmentLHS(element)) {
|
||||
return element;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private static boolean isUnaryWriteExpression(PsiElement parent) {
|
||||
IElementType tokenType = null;
|
||||
if (parent instanceof PsiPrefixExpression) {
|
||||
tokenType = ((PsiPrefixExpression)parent).getOperationTokenType();
|
||||
}
|
||||
if (parent instanceof PsiPostfixExpression) {
|
||||
tokenType = ((PsiPostfixExpression)parent).getOperationTokenType();
|
||||
}
|
||||
return tokenType == JavaTokenType.PLUSPLUS || tokenType == JavaTokenType.MINUSMINUS;
|
||||
}
|
||||
|
||||
private static boolean isSameDefinition(final PsiElement def, final PsiExpression defToInline) {
|
||||
if (def instanceof PsiLocalVariable) return defToInline.equals(((PsiLocalVariable)def).getInitializer());
|
||||
final PsiElement parent = def.getParent();
|
||||
|
||||
@@ -44,7 +44,6 @@ import com.intellij.psi.javadoc.PsiDocTagValue;
|
||||
import com.intellij.psi.search.LocalSearchScope;
|
||||
import com.intellij.psi.search.SearchScope;
|
||||
import com.intellij.psi.search.searches.ReferencesSearch;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import com.intellij.psi.util.*;
|
||||
import com.intellij.refactoring.PackageWrapper;
|
||||
import com.intellij.refactoring.introduceField.ElementToWorkOn;
|
||||
@@ -421,25 +420,13 @@ public class RefactoringUtil {
|
||||
return type;
|
||||
}
|
||||
|
||||
public static boolean isAssignmentLHS(PsiElement element) {
|
||||
PsiElement parent = element.getParent();
|
||||
|
||||
return parent instanceof PsiAssignmentExpression && element.equals(((PsiAssignmentExpression)parent).getLExpression()) ||
|
||||
isPlusPlusOrMinusMinus(parent);
|
||||
public static boolean isAssignmentLHS(@NotNull PsiElement element) {
|
||||
return element instanceof PsiExpression && PsiUtil.isAccessedForWriting((PsiExpression)element);
|
||||
}
|
||||
|
||||
@Contract("null -> false")
|
||||
public static boolean isPlusPlusOrMinusMinus(PsiElement element) {
|
||||
if (element instanceof PsiPrefixExpression) {
|
||||
return ((PsiPrefixExpression)element).getOperationTokenType() == JavaTokenType.PLUSPLUS ||
|
||||
((PsiPrefixExpression)element).getOperationTokenType() == JavaTokenType.MINUSMINUS;
|
||||
}
|
||||
else if (element instanceof PsiPostfixExpression) {
|
||||
IElementType operandTokenType = ((PsiPostfixExpression)element).getOperationTokenType();
|
||||
return operandTokenType == JavaTokenType.PLUSPLUS || operandTokenType == JavaTokenType.MINUSMINUS;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
return PsiUtil.isIncrementDecrementOperation(element);
|
||||
}
|
||||
|
||||
private static void removeFinalParameters(PsiMethod method) throws IncorrectOperationException {
|
||||
|
||||
@@ -83,18 +83,8 @@ public final class PsiUtil extends PsiUtilCore {
|
||||
|
||||
public static boolean isAccessedForWriting(@NotNull PsiExpression expr) {
|
||||
if (isOnAssignmentLeftHand(expr)) return true;
|
||||
PsiElement parent = PsiTreeUtil.skipParentsOfType(expr, PsiParenthesizedExpression.class);
|
||||
if (parent instanceof PsiPrefixExpression) {
|
||||
IElementType tokenType = ((PsiPrefixExpression) parent).getOperationTokenType();
|
||||
return tokenType == JavaTokenType.PLUSPLUS || tokenType == JavaTokenType.MINUSMINUS;
|
||||
}
|
||||
else if (parent instanceof PsiPostfixExpression) {
|
||||
IElementType tokenType = ((PsiPostfixExpression) parent).getOperationTokenType();
|
||||
return tokenType == JavaTokenType.PLUSPLUS || tokenType == JavaTokenType.MINUSMINUS;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
PsiElement parent = skipParenthesizedExprUp(expr.getParent());
|
||||
return isIncrementDecrementOperation(parent);
|
||||
}
|
||||
|
||||
public static boolean isAccessedForReading(@NotNull PsiExpression expr) {
|
||||
|
||||
Reference in New Issue
Block a user