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; }