public class FieldOverwrite { int val; int val2; int[] data; public FieldOverwrite(int field) { this.val = 123; this.val = field; } void testArray() { data = new int[] {10, 20, 30, 40}; } void twiceAssignment() { val = val = 1; val2 = val2 += 2; } void increment() { val++; val=2; val+=3; val=4; } void use() { val = 1; val = calc(2); } void branches(boolean b) { val = 1; if (b) { val = 2; } } void branches2(boolean b) { val = 1; if (b) { val = 2; } else { val = 3; } } void diamondBranches(boolean b) { if (b) { val = 2; } else { val2 = 2; } if (b) { val = 3; } else { val2 = 3; } } void diamondBranchesOk(boolean b) { if (b) { val = 2; } else { val2 = 2; } if (!b) { val = 3; } else { val2 = 3; } } int calc(int x) { return val * x; } private int getVal() { return val; } void noUseInlining() { val2 = 1; val2 = getVal(); } void test(FieldOverwrite fo) { val = 1; val = 2; fo.val = 3; fo.val = 4; } // IDEA-195460 private int intField; private static int intStaticField; public void main() { int intVar = 0; intVar = intVar++; System.out.println(intVar); intField = 0; intField = intField++; System.out.println(intField); intStaticField = 0; intStaticField = intStaticField++; System.out.println(intStaticField); } void testUseStatic() { intStaticField = 1; useStatic(); intStaticField = 2; } void writeByRange(int x) { if (x > 0) { val = 1; } if (x > 10) { val = 2; } } void writeByRange2(int x) { if (x > 10) { val = 2; } if (x > 0) { val = 1; } } static void useStatic() { System.out.println(intStaticField); } }