field can be local: group by top level blocks (IDEA-121490)

This commit is contained in:
Anna Kozlova
2014-03-18 18:51:15 +01:00
parent f2c905de9a
commit 6af1d4e49a
3 changed files with 44 additions and 1 deletions

View File

@@ -85,7 +85,7 @@ public class FieldCanBeLocalInspection extends FieldCanBeLocalInspectionBase {
private static void groupByCodeBlocks(final Collection<PsiReference> allReferences, Map<PsiCodeBlock, Collection<PsiReference>> refs) {
for (PsiReference psiReference : allReferences) {
final PsiElement element = psiReference.getElement();
final PsiCodeBlock block = PsiTreeUtil.getParentOfType(element, PsiCodeBlock.class);
final PsiCodeBlock block = PsiTreeUtil.getTopmostParentOfType(element, PsiCodeBlock.class);
LOG.assertTrue(block != null);
Collection<PsiReference> references = refs.get(block);
if (references == null) {

View File

@@ -0,0 +1,21 @@
// "Convert to local" "true"
import java.util.ArrayList;
class ITest {
public IntelliJBugConvertToLocal(int x, int z) {
ArrayList<String> mayBeLocal = new ArrayList<String>();
if (x == 5) {
mayBeLocal.add("jjj");
}
if (x > z) {
useIt(mayBeLocal);
}
}
@SuppressWarnings("UnusedParameters")
private void useIt(Object data) {
System.out.println(data);
}
}

View File

@@ -0,0 +1,22 @@
// "Convert to local" "true"
import java.util.ArrayList;
class ITest {
private ArrayList<String> may<caret>BeLocal = new ArrayList<String>();
public IntelliJBugConvertToLocal(int x, int z) {
if (x == 5) {
mayBeLocal.add("jjj");
}
if (x > z) {
useIt(mayBeLocal);
}
}
@SuppressWarnings("UnusedParameters")
private void useIt(Object data) {
System.out.println(data);
}
}