| // This test covers Issue345 at: |
| // https://github.com/typetools/checker-framework/issues/345 |
| public class AssignmentDuringInitialization { |
| String f1; |
| String f2; |
| |
| String f3; |
| String f4; |
| |
| String f5; |
| String f6; |
| |
| { |
| // :: error: (assignment) |
| f1 = f2; |
| f2 = f1; |
| f2.toString(); // Null pointer exception here |
| } |
| |
| public AssignmentDuringInitialization() { |
| // :: error: (assignment) |
| f3 = f4; |
| f4 = f3; |
| f4.toString(); // Null pointer exception here |
| |
| f5 = "hello"; |
| f6 = f5; |
| } |
| |
| public void goodBehavior() { |
| // This isn't a constructor or initializer. |
| // The receiver of this method should already be initialized |
| // and therefore f1 and f2 should already be initialized. |
| f5 = f6; |
| f6 = f5; |
| f6.toString(); // No exception here |
| } |
| |
| public static void main(String[] args) { |
| AssignmentDuringInitialization a = new AssignmentDuringInitialization(); |
| } |
| } |