diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/AnonymousCanBeLambdaInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/AnonymousCanBeLambdaInspection.java index 5d97a50ee127..3c8cc9e04919 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/AnonymousCanBeLambdaInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/AnonymousCanBeLambdaInspection.java @@ -195,6 +195,19 @@ public class AnonymousCanBeLambdaInspection extends BaseJavaBatchLocalInspection return canBeConvertedToLambda(aClass, acceptParameterizedFunctionTypes, true, ignoredRuntimeAnnotations); } + public static boolean isClassAndMethodSuitableForConversion(PsiAnonymousClass aClass, + PsiMethod method, + Set ignoredRuntimeAnnotations) { + return aClass.getFields().length == 0 && + aClass.getInnerClasses().length == 0 && + aClass.getInitializers().length == 0 && + method.getBody() != null && + method.getDocComment() == null && + !hasRuntimeAnnotations(method, ignoredRuntimeAnnotations) && + !method.hasModifierProperty(PsiModifier.SYNCHRONIZED) && + !hasForbiddenRefsInsideBody(method, aClass); + } + public static boolean canBeConvertedToLambda(PsiAnonymousClass aClass, boolean acceptParameterizedFunctionTypes, boolean reportNotAnnotatedInterfaces, @@ -210,16 +223,9 @@ public class AnonymousCanBeLambdaInspection extends BaseJavaBatchLocalInspection final PsiMethod interfaceMethod = LambdaUtil.getFunctionalInterfaceMethod(resolveResult); if (interfaceMethod != null && (acceptParameterizedFunctionTypes || !interfaceMethod.hasTypeParameters())) { final PsiMethod[] methods = aClass.getMethods(); - if (methods.length == 1 && - aClass.getFields().length == 0 && - aClass.getInnerClasses().length == 0 && - aClass.getInitializers().length == 0) { + if (methods.length == 1) { final PsiMethod method = methods[0]; - if (method.getBody() != null && - method.getDocComment() == null && - !hasRuntimeAnnotations(method, ignoredRuntimeAnnotations) && - !method.hasModifierProperty(PsiModifier.SYNCHRONIZED) && - !hasForbiddenRefsInsideBody(method, aClass)) { + if (isClassAndMethodSuitableForConversion(aClass, method, ignoredRuntimeAnnotations)) { final PsiType inferredType = getInferredType(aClass, method); if (inferredType == null) { return false; diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/AnonymousHasLambdaAlternativeInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/AnonymousHasLambdaAlternativeInspection.java index 56ed803da99f..b259c5dc956d 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/AnonymousHasLambdaAlternativeInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/AnonymousHasLambdaAlternativeInspection.java @@ -67,19 +67,11 @@ public class AnonymousHasLambdaAlternativeInspection extends BaseJavaBatchLocalI public void visitAnonymousClass(final PsiAnonymousClass aClass) { super.visitAnonymousClass(aClass); PsiMethod[] methods = aClass.getMethods(); - if(methods.length == 1 && - aClass.getFields().length == 0 && - aClass.getInnerClasses().length == 0 && - aClass.getInitializers().length == 0) { - PsiExpressionList argumentList = aClass.getArgumentList(); + if(methods.length == 1) { PsiMethod method = methods[0]; - if (argumentList != null && - argumentList.getExpressions().length == 0 && - method.getBody() != null && - method.getDocComment() == null && - !AnonymousCanBeLambdaInspection.hasRuntimeAnnotations(method, Collections.emptySet()) && - !method.hasModifierProperty(PsiModifier.SYNCHRONIZED) && - !AnonymousCanBeLambdaInspection.hasForbiddenRefsInsideBody(method, aClass)) { + PsiExpressionList argumentList = aClass.getArgumentList(); + if (AnonymousCanBeLambdaInspection.isClassAndMethodSuitableForConversion(aClass, method, Collections.emptySet()) && + argumentList != null && argumentList.getExpressions().length == 0) { PsiClassType type = aClass.getBaseClassType(); AnonymousLambdaAlternative alternative = getAlternative(type.resolve(), method); if(alternative != null) {