mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
StreamToLoopInspection: reuse final variable as non-final (removing "final" keyword) (IDEA-CR-17006)
This commit is contained in:
+7
-3
@@ -479,6 +479,12 @@ public class StreamToLoopInspection extends BaseJavaBatchLocalInspectionTool {
|
||||
if(declaration.getDeclaredElements().length == 1) {
|
||||
myPlaceholder = declaration;
|
||||
PsiVariable copy = (PsiVariable)var.copy();
|
||||
if (kind == ResultKind.NON_FINAL) {
|
||||
PsiModifierList modifierList = copy.getModifierList();
|
||||
if (modifierList != null) {
|
||||
modifierList.setModifierProperty(PsiModifier.FINAL, false);
|
||||
}
|
||||
}
|
||||
PsiExpression oldInitializer = copy.getInitializer();
|
||||
LOG.assertTrue(oldInitializer != null);
|
||||
oldInitializer.replace(createExpression(initializer));
|
||||
@@ -498,9 +504,7 @@ public class StreamToLoopInspection extends BaseJavaBatchLocalInspectionTool {
|
||||
|
||||
@Contract("null -> false")
|
||||
private static boolean canUseAsNonFinal(PsiVariable var) {
|
||||
if(!(var instanceof PsiLocalVariable) || var.hasModifierProperty(PsiModifier.FINAL)) {
|
||||
return false;
|
||||
}
|
||||
if (!(var instanceof PsiLocalVariable)) return false;
|
||||
PsiElement block = PsiUtil.getVariableCodeBlock(var, null);
|
||||
return block != null && ReferencesSearch.search(var).forEach(ref -> {
|
||||
PsiElement context = PsiTreeUtil.getParentOfType(ref.getElement(), PsiClass.class, PsiLambdaExpression.class);
|
||||
|
||||
+3
-5
@@ -4,16 +4,14 @@ import java.util.List;
|
||||
|
||||
public class Main {
|
||||
public void test(List<String> list) {
|
||||
// Cannot reuse the variable as user explicitly marked it as final
|
||||
String found = "";
|
||||
String res = "";
|
||||
for (String s : list) {
|
||||
String trim = s.trim();
|
||||
if (!trim.isEmpty()) {
|
||||
found = trim;
|
||||
res = trim;
|
||||
break;
|
||||
}
|
||||
}
|
||||
final String res = found;
|
||||
System.out.println(res);
|
||||
System.out.println(res);
|
||||
}
|
||||
}
|
||||
|
||||
-1
@@ -4,7 +4,6 @@ import java.util.List;
|
||||
|
||||
public class Main {
|
||||
public void test(List<String> list) {
|
||||
// Cannot reuse the variable as user explicitly marked it as final
|
||||
final String res = list.stream().map(String::trim).filter(trim -> !trim.isEmpty()).fi<caret>ndFirst().orElse("");
|
||||
System.out.println(res);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user