diff --git a/java/java-psi-api/src/com/intellij/psi/util/RedundantCastUtil.java b/java/java-psi-api/src/com/intellij/psi/util/RedundantCastUtil.java index 643011e68a88..107a562200e9 100644 --- a/java/java-psi-api/src/com/intellij/psi/util/RedundantCastUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/util/RedundantCastUtil.java @@ -402,7 +402,8 @@ public class RedundantCastUtil { (!(newCall instanceof PsiCallExpression) || oldAnonymousClass != null && newAnonymousClass != null && Comparing.equal(oldAnonymousClass.getBaseClassType(), newAnonymousClass.getBaseClassType()) || Comparing.equal(PsiUtil.recaptureWildcards(((PsiCallExpression)newCall).getType(), expression), ((PsiCallExpression)expression).getType())) && - newResult.isValidResult()) { + newResult.isValidResult() && + !(newResult instanceof MethodCandidateInfo && ((MethodCandidateInfo)newResult).getInferenceErrorMessage() != null)) { if (!(newArgs[i] instanceof PsiFunctionalExpression)) { addToResults(cast); } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/redundantCast/InferenceErrorForApplicableMethod.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/redundantCast/InferenceErrorForApplicableMethod.java new file mode 100644 index 000000000000..5505ac0f83aa --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/redundantCast/InferenceErrorForApplicableMethod.java @@ -0,0 +1,14 @@ + +import java.util.function.Function; + +class Test { + static class Node { } + static class ValueNode extends Node {} + + static void m(ValueNode v, Node n) { + pathToCustomNode((Node)v, current -> n); + } + + public static void pathToCustomNode(T node, Function getParent) { } + +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/lambda/LambdaRedundantCastTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/lambda/LambdaRedundantCastTest.java index d74a260e475a..97414c253938 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/lambda/LambdaRedundantCastTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/lambda/LambdaRedundantCastTest.java @@ -82,6 +82,7 @@ public class LambdaRedundantCastTest extends LightDaemonAnalyzerTestCase { public void testCastInConditionalBranch() { doTest();} public void testCastInsideLambdaReturnExpressionPassedToEnumConstant() { doTest(); } public void testGroundTargetTypeDiffersFromCastType() { doTest(); } + public void testInferenceErrorForApplicableMethod() { doTest(); } public void testRejectReturnTypeChange() { doTest(); }