disable lambda -> method ref if resulted methods are not the same (IDEA-134486)

This commit is contained in:
Anna Kozlova
2014-12-18 14:09:45 +01:00
parent 6e761e661f
commit 79da0849e2
2 changed files with 20 additions and 5 deletions

View File

@@ -22,10 +22,7 @@ import com.intellij.openapi.project.Project;
import com.intellij.pom.java.LanguageLevel;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
import com.intellij.psi.util.InheritanceUtil;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.PsiUtil;
import com.intellij.psi.util.TypeConversionUtil;
import com.intellij.psi.util.*;
import com.intellij.util.ArrayUtil;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
@@ -110,7 +107,16 @@ public class LambdaCanBeMethodReferenceInspection extends BaseJavaBatchLocalInsp
if (element instanceof PsiMethod && !isSimpleCall(parameters, callExpression, (PsiMethod)element)) {
return null;
}
return callExpression;
if (!(element instanceof PsiMethod)) {
return callExpression;
}
final PsiMethod method = callExpression.resolveMethod();
if (method == null) {
LOG.error(callExpression);
return null;
}
return MethodSignatureUtil.areSignaturesEqual((PsiMethod)element, method) ? callExpression : null;
}
}
finally {

View File

@@ -0,0 +1,9 @@
// "Replace lambda with method reference" "false"
import java.util.HashMap;
import java.util.Map;
class Test {
public static void main(Map<Integer, Map<Object, Object>> map) {
map.computeIfAbsent(123, key -> new Hash<caret>Map<>());
}
}