mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
StreamApiUtil: fix addition of map operation when object-object cast is involved
This commit is contained in:
@@ -19,6 +19,7 @@ import com.intellij.codeInspection.LambdaCanBeMethodReferenceInspection;
|
||||
import com.intellij.codeInspection.util.OptionalUtil;
|
||||
import com.intellij.openapi.extensions.ExtensionPointName;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.CodeStyleManager;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
@@ -104,7 +105,8 @@ public interface ChainCallExtractor {
|
||||
PsiMethodCallExpression call = tryCast(args.getParent(), PsiMethodCallExpression.class);
|
||||
if (call == null) return null;
|
||||
for(ChainCallExtractor extractor : KEY.getExtensions()) {
|
||||
if(extractor.canExtractChainCall(call, expression, targetType)) {
|
||||
if(extractor.canExtractChainCall(call, expression, targetType) &&
|
||||
StringUtil.isNotEmpty(extractor.getMethodName(parameter, expression, targetType))) {
|
||||
return extractor;
|
||||
}
|
||||
}
|
||||
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
// "Replace with collect" "true"
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class Main {
|
||||
List<String> getStrings(List<?> list) {
|
||||
List<String> result = list.stream().filter(o -> o instanceof String).map(o -> (String) o).collect(Collectors.toList());
|
||||
return result;
|
||||
}
|
||||
}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
// "Replace with collect" "true"
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class Main {
|
||||
List<String> getStrings(List<?> list) {
|
||||
List<String> result = new ArrayList<>();
|
||||
for (Object o : li<caret>st) {
|
||||
if (o instanceof String) {
|
||||
String s = (String) o;
|
||||
result.add(s);
|
||||
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@@ -114,11 +114,11 @@ public class StreamApiUtil {
|
||||
public static String getShortcutMappingMethod(PsiVariable variable, @Nullable PsiType outType, PsiElement mapper) {
|
||||
if (!(mapper instanceof PsiExpression)) return null;
|
||||
PsiExpression expression = PsiUtil.skipParenthesizedExprDown(((PsiExpression)mapper));
|
||||
if (expression instanceof PsiTypeCastExpression && Objects.equals(expression.getType(), outType)) {
|
||||
PsiType inType = variable.getType();
|
||||
if (expression instanceof PsiTypeCastExpression && inType instanceof PsiPrimitiveType && Objects.equals(expression.getType(), outType)) {
|
||||
expression = ((PsiTypeCastExpression)expression).getOperand();
|
||||
}
|
||||
if (ExpressionUtils.isReferenceTo(expression, variable)) {
|
||||
PsiType inType = variable.getType();
|
||||
if (!(outType instanceof PsiPrimitiveType)) {
|
||||
return inType instanceof PsiPrimitiveType ? "boxed" : "";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user