diff --git a/java/java-impl/src/com/intellij/refactoring/inline/InlineLocalHandler.java b/java/java-impl/src/com/intellij/refactoring/inline/InlineLocalHandler.java index b045fda2888b..d48e13b43989 100644 --- a/java/java-impl/src/com/intellij/refactoring/inline/InlineLocalHandler.java +++ b/java/java-impl/src/com/intellij/refactoring/inline/InlineLocalHandler.java @@ -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(); diff --git a/java/java-impl/src/com/intellij/refactoring/util/RefactoringUtil.java b/java/java-impl/src/com/intellij/refactoring/util/RefactoringUtil.java index e8bc507d2375..339d4c6dfa34 100644 --- a/java/java-impl/src/com/intellij/refactoring/util/RefactoringUtil.java +++ b/java/java-impl/src/com/intellij/refactoring/util/RefactoringUtil.java @@ -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 { diff --git a/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java b/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java index 3120f2e46a23..7ec4c766b739 100644 --- a/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java @@ -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) {