InvalidComparatorMethodReferenceInspection: fixes according to IDEA-CR-13278

This commit is contained in:
Tagir Valeev
2016-08-25 16:45:13 +03:00
parent 934968e146
commit 26841947aa
2 changed files with 16 additions and 2 deletions
@@ -19,6 +19,7 @@ import com.intellij.codeInsight.FileModificationService;
import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
import com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionBase;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
@@ -31,7 +32,7 @@ public class InvalidComparatorMethodReferenceInspection extends BaseJavaBatchLoc
public void visitMethodReferenceExpression(PsiMethodReferenceExpression expression) {
PsiExpression qualifierExpression = expression.getQualifierExpression();
PsiElement referenceNameElement = expression.getReferenceNameElement();
if (!(qualifierExpression instanceof PsiReference) || referenceNameElement == null) {
if (!(qualifierExpression instanceof PsiReferenceExpressionBase) || referenceNameElement == null) {
return;
}
String name = referenceNameElement.getText();
@@ -46,12 +47,16 @@ public class InvalidComparatorMethodReferenceInspection extends BaseJavaBatchLoc
if (targetType == null) {
return;
}
String targetClassName = targetType.getQualifiedName();
if(targetClassName == null || !targetClassName.equals(CommonClassNames.JAVA_UTIL_COMPARATOR)) {
return;
}
PsiElement refType = ((PsiReference)qualifierExpression).resolve();
if (!(refType instanceof PsiClass)) {
return;
}
String className = ((PsiClass)refType).getQualifiedName();
if (className == null || (!className.equals(Integer.class.getName()) && !className.equals(Math.class.getName()))) {
if (className == null || (!className.equals(CommonClassNames.JAVA_LANG_INTEGER) && !className.equals(Math.class.getName()))) {
return;
}
//noinspection DialogTitleCapitalization
@@ -0,0 +1,9 @@
// "Replace with Comparator.reverseOrder()" "false"
import java.util.function.IntBinaryOperator;
public class Main {
public static void main(String[] args) {
IntBinaryOperator op = Math::m<caret>in;
System.out.println(op.applyAsInt(1, 2));
}
}