diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/StreamApiMigrationInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/StreamApiMigrationInspection.java index 66e035b626e8..4fe7d118d917 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/StreamApiMigrationInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/StreamApiMigrationInspection.java @@ -508,7 +508,13 @@ public class StreamApiMigrationInspection extends BaseJavaBatchLocalInspectionTo iteration +=".map("; final JavaPsiFacade psiFacade = JavaPsiFacade.getInstance(project); final PsiClass functionClass = psiFacade.findClass("java.util.function.Function", GlobalSearchScope.allScope(project)); - final PsiClassType functionalInterfaceType = functionClass != null ? psiFacade.getElementFactory().createType(functionClass, parameter.getType(), expression.getType()) : null; + final PsiType[] paramTypes = {parameter.getType(), expression.getType()}; + for (int i = 0; i < paramTypes.length; i++) { + if (paramTypes[i] instanceof PsiPrimitiveType) { + paramTypes[i] = ((PsiPrimitiveType)paramTypes[i]).getBoxedType(expression); + } + } + final PsiClassType functionalInterfaceType = functionClass != null ? psiFacade.getElementFactory().createType(functionClass, paramTypes) : null; final PsiCallExpression toConvertCall = LambdaCanBeMethodReferenceInspection .canBeMethodReferenceProblem(expression, new PsiParameter[]{parameter}, functionalInterfaceType); final String methodReferenceText = LambdaCanBeMethodReferenceInspection.createMethodReferenceText(toConvertCall, functionalInterfaceType, new PsiParameter[]{parameter}); diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterPrimitive.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterPrimitive.java new file mode 100644 index 000000000000..00c2e47f78a8 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterPrimitive.java @@ -0,0 +1,9 @@ +// "Replace with collect" "true" +import java.util.List; +import java.util.stream.Collectors; + +class Sample { + public void some(List from, List to) { + to.addAll(from.stream().map(String::length).collect(Collectors.toList())); + } +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforePrimitive.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforePrimitive.java new file mode 100644 index 000000000000..317027f27521 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforePrimitive.java @@ -0,0 +1,10 @@ +// "Replace with collect" "true" +import java.util.List; + +class Sample { + public void some(List from, List to) { + for (String key : from) { + to.add(key.length()); + } + } +}