fix tests

This commit is contained in:
Anna Kozlova
2016-05-24 10:09:24 +02:00
parent d04c56cc46
commit b4b39a0c30
5 changed files with 15 additions and 3 deletions
@@ -126,7 +126,7 @@ class CanBeFinalAnnotator extends RefGraphAnnotatorEx {
Set<PsiVariable> allFields = new HashSet<PsiVariable>();
ContainerUtil.addAll(allFields, psiFields);
List<PsiVariable> instanceInitializerInitializedFields = new ArrayList<PsiVariable>();
Set<PsiField> fieldsInitializedInInitializers = new HashSet<>();
Set<PsiField> fieldsInitializedInInitializers = null;
for (PsiClassInitializer initializer : psiClass.getInitializers()) {
PsiCodeBlock body = initializer.getBody();
@@ -140,6 +140,9 @@ class CanBeFinalAnnotator extends RefGraphAnnotatorEx {
}
Collection<PsiVariable> writtenVariables = new ArrayList<PsiVariable>();
ControlFlowUtil.getWrittenVariables(flow, 0, flow.getSize(), false, writtenVariables);
if (fieldsInitializedInInitializers == null) {
fieldsInitializedInInitializers = new HashSet<>();
}
for (PsiVariable psiVariable : writtenVariables) {
if (allFields.contains(psiVariable)) {
if (instanceInitializerInitializedFields.contains(psiVariable)) {
@@ -194,7 +197,8 @@ class CanBeFinalAnnotator extends RefGraphAnnotatorEx {
}
for (PsiField psiField : psiFields) {
if ((!fieldsInitializedInInitializers.contains(psiField) || !allFields.contains(psiField)) && psiField.getInitializer() == null) {
if ((fieldsInitializedInInitializers != null && !fieldsInitializedInInitializers.contains(psiField) ||
!allFields.contains(psiField)) && psiField.getInitializer() == null) {
final RefFieldImpl refField = (RefFieldImpl)myManager.getReference(psiField);
if (refField != null) {
refField.setFlag(false, CAN_BE_FINAL_MASK);
@@ -103,6 +103,15 @@ public class CanBeFinalTest extends InspectionTestCase {
doTest(tool);
}
public void testFieldNonInitializedUsedInClassInitializer() throws Exception {
CanBeFinalInspection tool = new CanBeFinalInspection();
tool.REPORT_CLASSES = false;
tool.REPORT_FIELDS = true;
tool.REPORT_METHODS = false;
doTest(tool);
}
public void testInterfaceMethodInHierarchy() throws Exception {
CanBeFinalInspection tool = new CanBeFinalInspection();
tool.REPORT_CLASSES = false;
@@ -41,7 +41,6 @@ public class FieldCanBeLocalTest extends InspectionTestCase {
public void testFieldUsedForWritingInLambda() throws Exception {doTest();}
public void testStaticQualifiedFieldAccessForWriting() throws Exception {doTest();}
public void testFieldReferencedFromAnotherObject() throws Exception {doTest();}
public void testFieldNonInitializedUsedInClassInitializer() throws Exception {doTest();}
public void testIgnoreAnnotated() throws Exception {
final FieldCanBeLocalInspection inspection = new FieldCanBeLocalInspection();
doTestConfigured(inspection);