IDEA-126660 Incorrect 'condition is always true' for a final field if an overridden method is called from the constructor

This commit is contained in:
peter
2014-07-18 09:14:08 +02:00
parent a7ec8b7660
commit 5a22fdcf73
3 changed files with 51 additions and 5 deletions
@@ -0,0 +1,20 @@
class Parent {
Parent() {
callProtectedMethod();
}
protected void callProtectedMethod() { }
}
class Child extends Parent {
private final Object myField;
Child() {
super();
myField = new Object();
}
@Override
protected void callProtectedMethod() {
if (myField != null) { // HERE myField CAN be null
System.out.println();
}
}
}
@@ -174,6 +174,7 @@ public class DataFlowInspectionTest extends LightCodeInsightFixtureTestCase {
public void testTransientFinalField() { doTest(); }
public void testFinalFieldDuringInitialization() { doTest(); }
public void testFinalFieldDuringSuperInitialization() { doTest(); }
public void _testSymmetricUncheckedCast() { doTest(); } // http://youtrack.jetbrains.com/issue/IDEABKL-6871
public void testNullCheckDoesntAffectUncheckedCast() { doTest(); }
public void testThrowNull() { doTest(); }