diff --git a/java/java-psi-api/src/com/intellij/psi/LambdaUtil.java b/java/java-psi-api/src/com/intellij/psi/LambdaUtil.java index 42efaf8ff24b..f646cc237061 100644 --- a/java/java-psi-api/src/com/intellij/psi/LambdaUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/LambdaUtil.java @@ -292,7 +292,17 @@ public class LambdaUtil { if (expression instanceof PsiCallExpression && ((PsiCallExpression)expression).getTypeArguments().length > 0) return true; if (expression instanceof PsiNewExpression) { final PsiJavaCodeReferenceElement classReference = ((PsiNewExpression)expression).getClassOrAnonymousClassReference(); - if (classReference != null && classReference.getTypeParameters().length > 0) return true; + if (classReference != null) { + final PsiReferenceParameterList parameterList = classReference.getParameterList(); + if (parameterList != null) { + final PsiTypeElement[] typeParameterElements = parameterList.getTypeParameterElements(); + if (typeParameterElements.length > 0) { + if (!(typeParameterElements[0].getType() instanceof PsiDiamondType)){ + return true; + } + } + } + } } final PsiParameter[] lambdaParams = lambdaExpression.getParameterList().getParameters(); if (lambdaParams.length != methodParameters.length) return false; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/highlighting/InferFromTypeArgs.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/highlighting/InferFromTypeArgs.java index ab5bafab5448..d7f797a14a11 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/highlighting/InferFromTypeArgs.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/highlighting/InferFromTypeArgs.java @@ -8,6 +8,7 @@ public class BugReportLambdaSquiggles { static void bar( BugReportLambdaSquiggles x) { x.flatMap(t1 -> new ArrayList(t1)); + x.flatMap(t1 -> new ArrayList<>(t1)); } interface Mapper {