java redundant cast: unconditionally skip casts with varargs

GitOrigin-RevId: 01a0c7b240679155fab2e93e6e60db08000b9233
This commit is contained in:
Anna Kozlova
2020-05-11 08:33:17 +00:00
committed by intellij-monorepo-bot
parent 7107a6a626
commit 2d7494d72a
2 changed files with 2 additions and 15 deletions
@@ -9,10 +9,8 @@ import com.intellij.java.analysis.JavaAnalysisBundle;
import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
import com.intellij.psi.util.PsiExpressionTrimRenderer;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.PsiUtil;
import com.intellij.psi.util.RedundantCastUtil;
import com.siyeh.ig.bugs.NullArgumentToVariableArgMethodInspection;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -26,7 +24,6 @@ public class RedundantCastInspection extends GenericsInspectionToolBase {
@NonNls private static final String SHORT_NAME = "RedundantCast";
public boolean IGNORE_SUSPICIOUS_METHOD_CALLS;
public boolean IGNORE_SUSPICIOUS_VARARG_METHOD_CALLS = true;
public RedundantCastInspection() {
myQuickFixAction = new AcceptSuggested();
@@ -56,7 +53,6 @@ public class RedundantCastInspection extends GenericsInspectionToolBase {
public JComponent createOptionsPanel() {
final MultipleCheckboxOptionsPanel optionsPanel = new MultipleCheckboxOptionsPanel(this);
optionsPanel.addCheckbox(JavaAnalysisBundle.message("ignore.casts.in.suspicious.collections.method.calls"), "IGNORE_SUSPICIOUS_METHOD_CALLS");
optionsPanel.addCheckbox(JavaAnalysisBundle.message("ignore.casts.in.suspicious.varargs.method.calls"), "IGNORE_SUSPICIOUS_VARARG_METHOD_CALLS");
return optionsPanel;
}
@@ -75,14 +71,6 @@ public class RedundantCastInspection extends GenericsInspectionToolBase {
return null;
}
}
if (gParent instanceof PsiCallExpression && IGNORE_SUSPICIOUS_VARARG_METHOD_CALLS) {
PsiExpressionList expressionList = (PsiExpressionList)parent;
if (PsiTreeUtil.isAncestor(expressionList.getExpressions()[expressionList.getExpressionCount() - 1], operand, true) &&
NullArgumentToVariableArgMethodInspection.isSuspiciousVararg((PsiCallExpression)gParent, operand.getType())) {
return null;
}
}
}
String message = JavaAnalysisBundle.message("inspection.redundant.cast.problem.descriptor",
@@ -18,8 +18,8 @@ import com.intellij.psi.infos.MethodCandidateInfo;
import com.intellij.psi.tree.IElementType;
import com.intellij.util.Function;
import com.intellij.util.IncorrectOperationException;
import com.siyeh.ig.bugs.NullArgumentToVariableArgMethodInspection;
import com.siyeh.ig.psiutils.ExpectedTypeUtils;
import com.siyeh.ig.psiutils.ExpressionUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -377,10 +377,9 @@ public class RedundantCastUtil {
}
if (i == args.length - 1 && args.length == parameters.length && parameters[i].isVarArgs() &&
(ExpressionUtils.isNullLiteral(cast.getOperand()) ||
(NullArgumentToVariableArgMethodInspection.isSuspiciousVararg(newCall, newArgs[i].getType()) ||
oldResult instanceof MethodCandidateInfo && newResult instanceof MethodCandidateInfo &&
((MethodCandidateInfo)oldResult).getApplicabilityLevel() != ((MethodCandidateInfo)newResult).getApplicabilityLevel())) {
//do not mark cast to resolve ambiguity for calling varargs method with inexact argument
continue;
}