mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-CR-13704 PsiMethodUtil::isCompareToCall moved to MethodUtils; code reused from MethodUtils::isCompareTo; redundant null checks removed
This commit is contained in:
+3
-3
@@ -20,7 +20,7 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.CodeStyleManager;
|
||||
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
|
||||
import com.intellij.psi.util.PsiMethodUtil;
|
||||
import com.siyeh.ig.psiutils.MethodUtils;
|
||||
import org.jetbrains.annotations.Nls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -37,7 +37,7 @@ public class ComparatorCombinatorsInspection extends BaseJavaBatchLocalInspectio
|
||||
PsiElement body = lambda.getBody();
|
||||
if(body instanceof PsiMethodCallExpression) {
|
||||
PsiMethodCallExpression methodCall = (PsiMethodCallExpression)body;
|
||||
if(PsiMethodUtil.isCompareToCall(methodCall)) {
|
||||
if(MethodUtils.isCompareToCall(methodCall)) {
|
||||
PsiExpression left = methodCall.getMethodExpression().getQualifierExpression();
|
||||
PsiExpression right = methodCall.getArgumentList().getExpressions()[0];
|
||||
if(left instanceof PsiMethodCallExpression && right instanceof PsiMethodCallExpression) {
|
||||
@@ -95,7 +95,7 @@ public class ComparatorCombinatorsInspection extends BaseJavaBatchLocalInspectio
|
||||
PsiElement body = lambda.getBody();
|
||||
if (!(body instanceof PsiMethodCallExpression)) return;
|
||||
PsiMethodCallExpression methodCall = (PsiMethodCallExpression)body;
|
||||
if (!PsiMethodUtil.isCompareToCall(methodCall)) return;
|
||||
if (!MethodUtils.isCompareToCall(methodCall)) return;
|
||||
PsiExpression qualifier = methodCall.getMethodExpression().getQualifierExpression();
|
||||
if (!(qualifier instanceof PsiMethodCallExpression)) return;
|
||||
PsiMethodCallExpression call = (PsiMethodCallExpression)qualifier;
|
||||
|
||||
+2
-2
@@ -22,9 +22,9 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PsiMethodUtil;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.siyeh.ig.psiutils.MethodUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -80,7 +80,7 @@ public class ConvertCompareToToEqualsIntention extends BaseElementAtCaretIntenti
|
||||
PsiMethodCallExpression compareToExpression = null;
|
||||
boolean hasZero = false;
|
||||
for (PsiExpression psiExpression : binaryExpression.getOperands()) {
|
||||
if (compareToExpression == null && PsiMethodUtil.isCompareToCall(psiExpression)) {
|
||||
if (compareToExpression == null && MethodUtils.isCompareToCall(psiExpression)) {
|
||||
compareToExpression = (PsiMethodCallExpression)psiExpression;
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -19,8 +19,6 @@ import com.intellij.codeInsight.runner.JavaMainMethodProvider;
|
||||
import com.intellij.openapi.extensions.Extensions;
|
||||
import com.intellij.openapi.util.Condition;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
@@ -91,35 +89,4 @@ public class PsiMethodUtil {
|
||||
}
|
||||
return findMainMethod(aClass);
|
||||
}
|
||||
|
||||
public static boolean isCompareToCall(final @NotNull PsiExpression expression) {
|
||||
if (!(expression instanceof PsiMethodCallExpression)) {
|
||||
return false;
|
||||
}
|
||||
final PsiMethodCallExpression methodCallExpression = (PsiMethodCallExpression)expression;
|
||||
if (methodCallExpression.getMethodExpression().getQualifierExpression() == null) {
|
||||
return false;
|
||||
}
|
||||
final PsiMethod psiMethod = methodCallExpression.resolveMethod();
|
||||
if (psiMethod == null || !"compareTo".equals(psiMethod.getName()) || psiMethod.getParameterList().getParametersCount() != 1) {
|
||||
return false;
|
||||
}
|
||||
if (methodCallExpression.getArgumentList().getExpressions().length != 1) {
|
||||
return false;
|
||||
}
|
||||
final PsiClass containingClass = psiMethod.getContainingClass();
|
||||
if (containingClass == null) {
|
||||
return false;
|
||||
}
|
||||
final PsiClass javaLangComparable = JavaPsiFacade.getInstance(expression.getProject()).findClass(CommonClassNames.JAVA_LANG_COMPARABLE, GlobalSearchScope
|
||||
.allScope(
|
||||
expression.getProject()));
|
||||
if (javaLangComparable == null) {
|
||||
return false;
|
||||
}
|
||||
if (!containingClass.isInheritor(javaLangComparable, true)) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
+3
-4
@@ -15,8 +15,8 @@
|
||||
*/
|
||||
package com.siyeh.ig.bugs;
|
||||
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.InheritanceUtil;
|
||||
import com.intellij.psi.PsiField;
|
||||
import com.intellij.psi.PsiMethod;
|
||||
import com.siyeh.InspectionGadgetsBundle;
|
||||
import com.siyeh.ig.BaseInspection;
|
||||
import com.siyeh.ig.BaseInspectionVisitor;
|
||||
@@ -57,8 +57,7 @@ public class CompareToUsesNonFinalVariableInspection extends BaseInspection {
|
||||
private static class CompareToUsesNonFinalVariableVisitor extends NonFinalFieldsVisitor {
|
||||
@Override
|
||||
public void visitMethod(@NotNull PsiMethod method) {
|
||||
if (MethodUtils.isCompareTo(method) &&
|
||||
InheritanceUtil.isInheritor(method.getContainingClass(), false, CommonClassNames.JAVA_LANG_COMPARABLE)) {
|
||||
if (MethodUtils.isCompareTo(method)) {
|
||||
checkUsedNonFinalFields(method);
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -91,7 +91,7 @@ public class SubtractionInCompareToInspectionBase extends BaseInspection {
|
||||
}
|
||||
}
|
||||
final PsiMethod method = PsiTreeUtil.getParentOfType(expression, PsiMethod.class, true, PsiClass.class, PsiLambdaExpression.class);
|
||||
if (method == null || !MethodUtils.isCompareTo(method) && !MethodUtils.isComparatorCompare(method)) {
|
||||
if (!MethodUtils.isCompareTo(method) && !MethodUtils.isComparatorCompare(method)) {
|
||||
return;
|
||||
}
|
||||
registerError(expression);
|
||||
|
||||
-3
@@ -125,9 +125,6 @@ public class StringCompareToInspection extends BaseInspection {
|
||||
return false;
|
||||
}
|
||||
final PsiMethod method = expression.resolveMethod();
|
||||
if (method == null) {
|
||||
return false;
|
||||
}
|
||||
if (!MethodUtils.isCompareTo(method)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
+22
-1
@@ -26,6 +26,7 @@ import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.Query;
|
||||
import com.siyeh.HardcodedMethodConstants;
|
||||
import org.jetbrains.annotations.Contract;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -37,22 +38,28 @@ public class MethodUtils {
|
||||
|
||||
private MethodUtils() {}
|
||||
|
||||
@Contract("null -> false")
|
||||
public static boolean isComparatorCompare(@Nullable PsiMethod method) {
|
||||
return method != null && methodMatches(method, CommonClassNames.JAVA_UTIL_COMPARATOR, PsiType.INT, "compare", null, null);
|
||||
}
|
||||
|
||||
@Contract("null -> false")
|
||||
public static boolean isCompareTo(@Nullable PsiMethod method) {
|
||||
return method != null && methodMatches(method, null, PsiType.INT, HardcodedMethodConstants.COMPARE_TO, PsiType.NULL);
|
||||
return method != null && !methodMatches(method, null, PsiType.INT, HardcodedMethodConstants.COMPARE_TO, PsiType.NULL)
|
||||
&& InheritanceUtil.isInheritor(method.getContainingClass(), CommonClassNames.JAVA_LANG_COMPARABLE);
|
||||
}
|
||||
|
||||
@Contract("null -> false")
|
||||
public static boolean isHashCode(@Nullable PsiMethod method) {
|
||||
return method != null && methodMatches(method, null, PsiType.INT, HardcodedMethodConstants.HASH_CODE);
|
||||
}
|
||||
|
||||
@Contract("null -> false")
|
||||
public static boolean isFinalize(@Nullable PsiMethod method) {
|
||||
return method != null && methodMatches(method, null, PsiType.VOID, HardcodedMethodConstants.FINALIZE);
|
||||
}
|
||||
|
||||
@Contract("null -> false")
|
||||
public static boolean isToString(@Nullable PsiMethod method) {
|
||||
if (method == null) {
|
||||
return false;
|
||||
@@ -61,6 +68,7 @@ public class MethodUtils {
|
||||
return methodMatches(method, null, stringType, HardcodedMethodConstants.TO_STRING);
|
||||
}
|
||||
|
||||
@Contract("null -> false")
|
||||
public static boolean isEquals(@Nullable PsiMethod method) {
|
||||
if (method == null) {
|
||||
return false;
|
||||
@@ -355,4 +363,17 @@ public class MethodUtils {
|
||||
final PsiExpression returnValue = returnStatement.getReturnValue();
|
||||
return returnValue instanceof PsiThisExpression;
|
||||
}
|
||||
|
||||
@Contract("null -> false")
|
||||
public static boolean isCompareToCall(final @Nullable PsiExpression expression) {
|
||||
if (!(expression instanceof PsiMethodCallExpression)) {
|
||||
return false;
|
||||
}
|
||||
final PsiMethodCallExpression methodCallExpression = (PsiMethodCallExpression)expression;
|
||||
if (methodCallExpression.getMethodExpression().getQualifierExpression() == null) {
|
||||
return false;
|
||||
}
|
||||
final PsiMethod psiMethod = methodCallExpression.resolveMethod();
|
||||
return isCompareTo(psiMethod);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user