mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-05-06 13:20:53 +07:00
redundant type arguments: check all methods applicability till top level (IDEA-166696)
This commit is contained in:
@@ -23,6 +23,7 @@ import com.intellij.pom.java.LanguageLevel;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.CodeStyleManager;
|
||||
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
|
||||
import com.intellij.psi.infos.MethodCandidateInfo;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiTypesUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
@@ -243,7 +244,8 @@ public class PsiDiamondTypeUtil {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
||||
return checkParentApplicability(exprCopy);
|
||||
}
|
||||
|
||||
private static boolean isInferenceEquivalent(PsiType[] typeArguments,
|
||||
@@ -283,6 +285,18 @@ public class PsiDiamondTypeUtil {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return checkParentApplicability(exprCopy);
|
||||
}
|
||||
|
||||
private static boolean checkParentApplicability(PsiCallExpression exprCopy) {
|
||||
while (exprCopy != null){
|
||||
final JavaResolveResult resolveResult = exprCopy.resolveMethodGenerics();
|
||||
if (resolveResult instanceof MethodCandidateInfo && !((MethodCandidateInfo)resolveResult).isApplicable()) {
|
||||
return false;
|
||||
}
|
||||
exprCopy = PsiTreeUtil.getParentOfType(exprCopy, PsiCallExpression.class, true);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
// "Remove explicit type arguments" "false"
|
||||
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
class Test {
|
||||
void foo(List<String> input, Function<String, Integer> length) {
|
||||
input.stream().collect(Collectors.groupingBy(length,
|
||||
Collectors.collectingAndThen(Collectors.<St<caret>ring>maxBy(Comparator.naturalOrder()), Optional::get)));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user