lambda -> method ref: reject anonymous class replacement (IDEA-124748)

This commit is contained in:
Anna Kozlova
2014-05-05 17:12:13 +04:00
parent dc73135a77
commit a2a076c02a
2 changed files with 17 additions and 1 deletions
@@ -91,6 +91,8 @@ public class LambdaCanBeMethodReferenceInspection extends BaseJavaBatchLocalInsp
PsiType functionalInterfaceType) {
PsiCallExpression methodCall = extractMethodCallFromBlock(body);
if (methodCall instanceof PsiNewExpression && ((PsiNewExpression)methodCall).getAnonymousClass() != null) return null;
if (methodCall != null) {
final PsiExpressionList argumentList = methodCall.getArgumentList();
if (argumentList != null) {
@@ -102,7 +104,6 @@ public class LambdaCanBeMethodReferenceInspection extends BaseJavaBatchLocalInsp
if (psiMethod == null) {
isConstructor = true;
if (!(methodCall instanceof PsiNewExpression)) return null;
if (((PsiNewExpression)methodCall).getAnonymousClass() != null) return null;
final PsiJavaCodeReferenceElement classReference = ((PsiNewExpression)methodCall).getClassOrAnonymousClassReference();
if (classReference == null) return null;
containingClass = (PsiClass)classReference.resolve();
@@ -0,0 +1,15 @@
// "Replace lambda with method reference" "false"
class NonStaticInner3 {
class Foo {
public Foo() {
}
}
interface I1<X> {
X m();
}
{
I1<Foo> b2 = () -> <caret>new Foo(){};
}
}