From 2d7494d72a5d673845fb34180cd3cf119dcd2cdf Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Fri, 8 May 2020 20:19:33 +0200 Subject: [PATCH] java redundant cast: unconditionally skip casts with varargs GitOrigin-RevId: 01a0c7b240679155fab2e93e6e60db08000b9233 --- .../redundantCast/RedundantCastInspection.java | 12 ------------ .../src/com/intellij/psi/util/RedundantCastUtil.java | 5 ++--- 2 files changed, 2 insertions(+), 15 deletions(-) diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/redundantCast/RedundantCastInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/redundantCast/RedundantCastInspection.java index cc32e203f94f..920f41fd3991 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/redundantCast/RedundantCastInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/redundantCast/RedundantCastInspection.java @@ -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", diff --git a/java/java-analysis-impl/src/com/intellij/psi/util/RedundantCastUtil.java b/java/java-analysis-impl/src/com/intellij/psi/util/RedundantCastUtil.java index 753f9c62373f..4a1122d5213b 100644 --- a/java/java-analysis-impl/src/com/intellij/psi/util/RedundantCastUtil.java +++ b/java/java-analysis-impl/src/com/intellij/psi/util/RedundantCastUtil.java @@ -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; }