ParenthesesUtils: TypeConversionUtil.convertEQtoOperation used

This commit is contained in:
Tagir Valeev
2017-07-18 13:22:05 +07:00
parent 876e6970f0
commit 037d3d9f2a
@@ -18,6 +18,7 @@ package com.siyeh.ig.psiutils;
import com.intellij.psi.*;
import com.intellij.psi.tree.IElementType;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.TypeConversionUtil;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -27,8 +28,6 @@ import java.util.Map;
public class ParenthesesUtils {
private static final Map<IElementType, IElementType> tokenMap = new HashMap<>();
private ParenthesesUtils() {}
public static final int PARENTHESIZED_PRECEDENCE = 0;
@@ -54,20 +53,6 @@ public class ParenthesesUtils {
private static final Map<IElementType, Integer> s_binaryOperatorPrecedence = new HashMap<>(NUM_PRECEDENCES);
static {
tokenMap.put(JavaTokenType.PLUSEQ, JavaTokenType.PLUS);
tokenMap.put(JavaTokenType.MINUSEQ, JavaTokenType.MINUS);
tokenMap.put(JavaTokenType.ASTERISKEQ, JavaTokenType.ASTERISK);
tokenMap.put(JavaTokenType.DIVEQ, JavaTokenType.DIV);
tokenMap.put(JavaTokenType.ANDEQ, JavaTokenType.AND);
tokenMap.put(JavaTokenType.OREQ, JavaTokenType.OR);
tokenMap.put(JavaTokenType.XOREQ, JavaTokenType.XOR);
tokenMap.put(JavaTokenType.PERCEQ, JavaTokenType.PERC);
tokenMap.put(JavaTokenType.LTLTEQ, JavaTokenType.LTLT);
tokenMap.put(JavaTokenType.GTGTEQ, JavaTokenType.GTGT);
tokenMap.put(JavaTokenType.GTGTGTEQ, JavaTokenType.GTGTGT);
}
static {
s_binaryOperatorPrecedence.put(JavaTokenType.PLUS, ADDITIVE_PRECEDENCE);
s_binaryOperatorPrecedence.put(JavaTokenType.MINUS, ADDITIVE_PRECEDENCE);
@@ -555,12 +540,12 @@ public class ParenthesesUtils {
return parentPrecedence < childPrecedence;
}
public static boolean areParenthesesNeeded(PsiJavaToken sign, PsiExpression rhs) {
public static boolean areParenthesesNeeded(PsiJavaToken compoundAssignmentToken, PsiExpression rhs) {
if (rhs instanceof PsiPolyadicExpression) {
final PsiPolyadicExpression binaryExpression = (PsiPolyadicExpression)rhs;
final int precedence1 = getPrecedenceForOperator(binaryExpression.getOperationTokenType());
final IElementType signTokenType = sign.getTokenType();
final IElementType newOperatorToken = tokenMap.get(signTokenType);
final IElementType signTokenType = compoundAssignmentToken.getTokenType();
final IElementType newOperatorToken = TypeConversionUtil.convertEQtoOperation(signTokenType);
final int precedence2 = getPrecedenceForOperator(newOperatorToken);
return precedence1 >= precedence2 || !isCommutativeOperator(newOperatorToken);
}