mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
lambda -> method ref: allow pure method call chain (IDEA-164223)
This commit is contained in:
+8
-1
@@ -17,6 +17,7 @@ package com.intellij.codeInspection;
|
||||
|
||||
import com.intellij.codeInsight.FileModificationService;
|
||||
import com.intellij.codeInsight.daemon.GroupNames;
|
||||
import com.intellij.codeInspection.dataFlow.ControlFlowAnalyzer;
|
||||
import com.intellij.codeInspection.ui.MultipleCheckboxOptionsPanel;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.project.Project;
|
||||
@@ -326,7 +327,13 @@ public class LambdaCanBeMethodReferenceInspection extends BaseJavaBatchLocalInsp
|
||||
if (qualifier == null) {
|
||||
return true;
|
||||
}
|
||||
final Condition<PsiElement> callExpressionCondition = Conditions.instanceOf(PsiCallExpression.class);
|
||||
final Condition<PsiElement> callExpressionCondition = element -> {
|
||||
if (element instanceof PsiCallExpression) {
|
||||
PsiMethod method = ((PsiCallExpression)element).resolveMethod();
|
||||
return !(method != null && ControlFlowAnalyzer.isPure(method));
|
||||
}
|
||||
return false;
|
||||
};
|
||||
final Condition<PsiElement> nonFinalFieldRefCondition = expression -> {
|
||||
if (expression instanceof PsiReferenceExpression) {
|
||||
PsiElement element = ((PsiReferenceExpression)expression).resolve();
|
||||
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
// "Replace lambda with method reference" "true"
|
||||
import java.util.*;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
class Main {
|
||||
public static void main(String[] args) {
|
||||
final Test test = new Test();
|
||||
final List<Sub> subs = Arrays.asList(new Sub(), new Sub());
|
||||
|
||||
subs.forEach(test.getSubs()::add);
|
||||
}
|
||||
|
||||
private static class Test {
|
||||
private final List<Sub> subs = new ArrayList<>();
|
||||
|
||||
private List<Sub> getSubs() {
|
||||
return subs;
|
||||
}
|
||||
}
|
||||
|
||||
private static class Sub {
|
||||
}
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
// "Replace lambda with method reference" "true"
|
||||
import java.util.*;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
class Main {
|
||||
public static void main(String[] args) {
|
||||
final Test test = new Test();
|
||||
final List<Sub> subs = Arrays.asList(new Sub(), new Sub());
|
||||
|
||||
subs.forEach(t -> test.getSubs().a<caret>dd(t));
|
||||
}
|
||||
|
||||
private static class Test {
|
||||
private final List<Sub> subs = new ArrayList<>();
|
||||
|
||||
private List<Sub> getSubs() {
|
||||
return subs;
|
||||
}
|
||||
}
|
||||
|
||||
private static class Sub {
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user