diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/PsiDiamondTypeUtil.java b/java/java-psi-impl/src/com/intellij/psi/impl/PsiDiamondTypeUtil.java index f620fc48e5f8..702b3cb8008e 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/PsiDiamondTypeUtil.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/PsiDiamondTypeUtil.java @@ -284,7 +284,13 @@ public class PsiDiamondTypeUtil { private static boolean checkParentApplicability(PsiCallExpression exprCopy) { while (exprCopy != null){ - final JavaResolveResult resolveResult = exprCopy.resolveMethodGenerics(); + JavaResolveResult resolveResult = exprCopy.resolveMethodGenerics(); + if (exprCopy instanceof PsiNewExpression) { + PsiDiamondType diamondType = PsiDiamondType.getDiamondType((PsiNewExpression)exprCopy); + if (diamondType != null) { + resolveResult = diamondType.getStaticFactory(); + } + } if (resolveResult instanceof MethodCandidateInfo && !((MethodCandidateInfo)resolveResult).isApplicable()) { return false; } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/explicit2diamond/beforeInapplicableInference.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/explicit2diamond/beforeInapplicableInference.java new file mode 100644 index 000000000000..dd0dcc0289b8 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/explicit2diamond/beforeInapplicableInference.java @@ -0,0 +1,14 @@ +// "Replace with <>" "false" + +import java.util.function.Consumer; + +class Test { + public static > Foo test(Consumer function) { + return new Foo<T>(function); + } + + public static class Foo> { + Foo(Consumer function) { } + } + +} \ No newline at end of file