IDEADEV-31824 (Incorrect "manual array copy" warning)
[fedora-idea.git] / plugins / InspectionGadgets / src / com / siyeh / ig / psiutils / ComparisonUtils.java
blob2cbb5eb86d26e575276bb25c135b1e3a361a62e6
1 /*
2 * Copyright 2003-2006 Dave Griffith, Bas Leijdekkers
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package com.siyeh.ig.psiutils;
18 import com.intellij.psi.JavaTokenType;
19 import com.intellij.psi.PsiBinaryExpression;
20 import com.intellij.psi.PsiExpression;
21 import com.intellij.psi.PsiJavaToken;
22 import com.intellij.psi.tree.IElementType;
23 import org.jetbrains.annotations.NotNull;
24 import org.jetbrains.annotations.Nullable;
26 import java.util.HashMap;
27 import java.util.HashSet;
28 import java.util.Map;
29 import java.util.Set;
31 public class ComparisonUtils {
33 private ComparisonUtils() {
34 super();
37 private static final Set<IElementType> s_comparisonTokens =
38 new HashSet<IElementType>(6);
40 private static final Map<IElementType,String> s_swappedComparisons =
41 new HashMap<IElementType, String>(6);
43 private static final Map<IElementType,String> s_invertedComparisons =
44 new HashMap<IElementType, String>(6);
47 static {
48 s_comparisonTokens.add(JavaTokenType.EQEQ);
49 s_comparisonTokens.add(JavaTokenType.NE);
50 s_comparisonTokens.add(JavaTokenType.GT);
51 s_comparisonTokens.add(JavaTokenType.LT);
52 s_comparisonTokens.add(JavaTokenType.GE);
53 s_comparisonTokens.add(JavaTokenType.LE);
55 s_swappedComparisons.put(JavaTokenType.EQEQ, "==");
56 s_swappedComparisons.put(JavaTokenType.NE, "!=");
57 s_swappedComparisons.put(JavaTokenType.GT, "<");
58 s_swappedComparisons.put(JavaTokenType.LT, ">");
59 s_swappedComparisons.put(JavaTokenType.GE, "<=");
60 s_swappedComparisons.put(JavaTokenType.LE, ">=");
62 s_invertedComparisons.put(JavaTokenType.EQEQ, "!=");
63 s_invertedComparisons.put(JavaTokenType.NE, "==");
64 s_invertedComparisons.put(JavaTokenType.GT, "<=");
65 s_invertedComparisons.put(JavaTokenType.LT, ">=");
66 s_invertedComparisons.put(JavaTokenType.GE, "<");
67 s_invertedComparisons.put(JavaTokenType.LE, ">");
71 public static boolean isComparison(@Nullable PsiExpression expression) {
72 if(!(expression instanceof PsiBinaryExpression)) {
73 return false;
75 final PsiBinaryExpression binaryExpression =
76 (PsiBinaryExpression) expression;
77 final PsiJavaToken sign = binaryExpression.getOperationSign();
78 final IElementType tokenType = sign.getTokenType();
79 return s_comparisonTokens.contains(tokenType);
82 public static String getFlippedComparison(@NotNull PsiJavaToken token) {
83 final IElementType tokenType = token.getTokenType();
84 return s_swappedComparisons.get(tokenType);
87 public static boolean isEqualityComparison(
88 @NotNull PsiBinaryExpression expression) {
89 final IElementType tokenType = expression.getOperationTokenType();
90 return tokenType.equals(JavaTokenType.EQEQ) ||
91 tokenType.equals(JavaTokenType.NE);
94 public static String getNegatedComparison(@NotNull PsiJavaToken token) {
95 final IElementType tokenType = token.getTokenType();
96 return s_invertedComparisons.get(tokenType);