mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
improve effectively final check in Java8CollectionsApiInspection (avoid collection creation)
This commit is contained in:
+6
-5
@@ -183,11 +183,12 @@ public class Java8CollectionsApiInspection extends BaseJavaBatchLocalInspectionT
|
||||
return;
|
||||
}
|
||||
if(!ExceptionUtil.getThrownCheckedExceptions(new PsiElement[] {lambdaCandidate}).isEmpty()) return;
|
||||
PsiElement[] varRefs = PsiTreeUtil.collectElements(lambdaCandidate, e -> e instanceof PsiReferenceExpression &&
|
||||
((PsiReferenceExpression)e)
|
||||
.resolve() instanceof PsiVariable);
|
||||
if (!StreamEx.of(varRefs).select(PsiReferenceExpression.class).map(PsiReferenceExpression::resolve).select(PsiVariable.class)
|
||||
.allMatch(var -> HighlightControlFlowUtil.isEffectivelyFinal(var, lambdaCandidate, null))) {
|
||||
if(!PsiTreeUtil.processElements(lambdaCandidate, e -> {
|
||||
if(!(e instanceof PsiReferenceExpression)) return true;
|
||||
PsiElement element = ((PsiReferenceExpression)e).resolve();
|
||||
if(!(element instanceof PsiVariable)) return true;
|
||||
return HighlightControlFlowUtil.isEffectivelyFinal((PsiVariable)element, lambdaCandidate, null);
|
||||
})) {
|
||||
return;
|
||||
}
|
||||
holder.registerProblem(condition, QuickFixBundle.message("java.8.collections.api.inspection.description"),
|
||||
|
||||
Reference in New Issue
Block a user