mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
eliminate duplicates
This commit is contained in:
+2
-31
@@ -156,37 +156,8 @@ public class LambdaCanBeMethodReferenceInspection extends BaseJavaBatchLocalInsp
|
||||
}
|
||||
|
||||
public static PsiCallExpression extractMethodCallFromBlock(PsiElement body) {
|
||||
PsiCallExpression methodCall = null;
|
||||
if (body instanceof PsiCallExpression) {
|
||||
methodCall = (PsiCallExpression)body;
|
||||
}
|
||||
else if (body instanceof PsiCodeBlock) {
|
||||
final PsiStatement[] statements = ((PsiCodeBlock)body).getStatements();
|
||||
if (statements.length == 1) {
|
||||
if (statements[0] instanceof PsiReturnStatement) {
|
||||
final PsiExpression returnValue = ((PsiReturnStatement)statements[0]).getReturnValue();
|
||||
if (returnValue instanceof PsiCallExpression) {
|
||||
methodCall = (PsiCallExpression)returnValue;
|
||||
}
|
||||
}
|
||||
else if (statements[0] instanceof PsiExpressionStatement) {
|
||||
final PsiExpression expr = ((PsiExpressionStatement)statements[0]).getExpression();
|
||||
if (expr instanceof PsiCallExpression) {
|
||||
methodCall = (PsiCallExpression)expr;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (body instanceof PsiBlockStatement) {
|
||||
return extractMethodCallFromBlock(((PsiBlockStatement)body).getCodeBlock());
|
||||
}
|
||||
else if (body instanceof PsiExpressionStatement) {
|
||||
final PsiExpression expression = ((PsiExpressionStatement)body).getExpression();
|
||||
if (expression instanceof PsiCallExpression) {
|
||||
methodCall = (PsiCallExpression)expression;
|
||||
}
|
||||
}
|
||||
return methodCall;
|
||||
final PsiExpression expression = LambdaUtil.extractSingleExpressionFromBody(body);
|
||||
return expression instanceof PsiCallExpression ? (PsiCallExpression)expression : null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
+2
-23
@@ -28,7 +28,6 @@ import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import org.jetbrains.annotations.Nls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
@@ -75,7 +74,7 @@ public class RedundantLambdaCodeBlockInspection extends BaseJavaBatchLocalInspec
|
||||
super.visitLambdaExpression(expression);
|
||||
final PsiElement body = expression.getBody();
|
||||
if (body instanceof PsiCodeBlock) {
|
||||
PsiExpression psiExpression = getExpression((PsiCodeBlock)body);
|
||||
PsiExpression psiExpression = LambdaUtil.extractSingleExpressionFromBody(body);
|
||||
if (psiExpression != null && !findCommentsOutsideExpression(body, psiExpression)) {
|
||||
if (LambdaUtil.isExpressionStatementExpression(psiExpression)) {
|
||||
final PsiElement parent = PsiUtil.skipParenthesizedExprUp(expression.getParent());
|
||||
@@ -122,26 +121,6 @@ public class RedundantLambdaCodeBlockInspection extends BaseJavaBatchLocalInspec
|
||||
};
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static PsiExpression getExpression(PsiCodeBlock body) {
|
||||
final PsiStatement[] statements = body.getStatements();
|
||||
if (statements.length == 1) {
|
||||
if (statements[0] instanceof PsiBlockStatement) {
|
||||
return getExpression(((PsiBlockStatement)statements[0]).getCodeBlock());
|
||||
}
|
||||
if (statements[0] instanceof PsiReturnStatement || statements[0] instanceof PsiExpressionStatement) {
|
||||
if (statements[0] instanceof PsiReturnStatement) {
|
||||
final PsiReturnStatement returnStatement = (PsiReturnStatement)statements[0];
|
||||
return returnStatement.getReturnValue();
|
||||
}
|
||||
else {
|
||||
return ((PsiExpressionStatement)statements[0]).getExpression();
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private static class ReplaceWithExprFix implements LocalQuickFix, HighPriorityAction {
|
||||
@NotNull
|
||||
@Override
|
||||
@@ -164,7 +143,7 @@ public class RedundantLambdaCodeBlockInspection extends BaseJavaBatchLocalInspec
|
||||
if (lambdaExpression != null) {
|
||||
final PsiElement body = lambdaExpression.getBody();
|
||||
if (body != null) {
|
||||
PsiExpression expression = getExpression((PsiCodeBlock)body);
|
||||
PsiExpression expression = LambdaUtil.extractSingleExpressionFromBody(body);
|
||||
if (expression != null) {
|
||||
body.replace(expression);
|
||||
}
|
||||
|
||||
@@ -468,6 +468,33 @@ public class LambdaUtil {
|
||||
body instanceof PsiReferenceExpression && !body.isPhysical();
|
||||
}
|
||||
|
||||
public static PsiExpression extractSingleExpressionFromBody(PsiElement body) {
|
||||
PsiExpression expression = null;
|
||||
if (body instanceof PsiExpression) {
|
||||
expression = (PsiExpression)body;
|
||||
}
|
||||
else if (body instanceof PsiCodeBlock) {
|
||||
final PsiStatement[] statements = ((PsiCodeBlock)body).getStatements();
|
||||
if (statements.length == 1) {
|
||||
if (statements[0] instanceof PsiReturnStatement) {
|
||||
expression = ((PsiReturnStatement)statements[0]).getReturnValue();
|
||||
}
|
||||
else if (statements[0] instanceof PsiExpressionStatement) {
|
||||
expression = ((PsiExpressionStatement)statements[0]).getExpression();
|
||||
} else if (statements[0] instanceof PsiBlockStatement) {
|
||||
return extractSingleExpressionFromBody(((PsiBlockStatement)statements[0]).getCodeBlock());
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (body instanceof PsiBlockStatement) {
|
||||
return extractSingleExpressionFromBody(((PsiBlockStatement)body).getCodeBlock());
|
||||
}
|
||||
else if (body instanceof PsiExpressionStatement) {
|
||||
expression = ((PsiExpressionStatement)body).getExpression();
|
||||
}
|
||||
return expression;
|
||||
}
|
||||
|
||||
public static class TypeParamsChecker extends PsiTypeVisitor<Boolean> {
|
||||
private PsiMethod myMethod;
|
||||
private final PsiClass myClass;
|
||||
|
||||
Reference in New Issue
Block a user