mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
AnonymousCanBeLambdaInspection/AnonymousHasLambdaAlternativeInspection: extract common condition (IDEA-CR-14331)
This commit is contained in:
+15
-9
@@ -195,6 +195,19 @@ public class AnonymousCanBeLambdaInspection extends BaseJavaBatchLocalInspection
|
||||
return canBeConvertedToLambda(aClass, acceptParameterizedFunctionTypes, true, ignoredRuntimeAnnotations);
|
||||
}
|
||||
|
||||
public static boolean isClassAndMethodSuitableForConversion(PsiAnonymousClass aClass,
|
||||
PsiMethod method,
|
||||
Set<String> 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;
|
||||
|
||||
+4
-12
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user