// assign to final import java.io.*; public class a21 { final int fi; { fi = 4; } void f1(int i) { final int j = 4; j = 3; } void f2(final int i) { final int j = 4; i = 3; } void f3( int ip) { fi = 3; for (final int i = 0; i<3; i++) { int k = 4; } final int i1 = 0; i1++; --i1; int i2 = -i1 + ~i1; final int j = (j=0) == 1 || j==0 ? 9 : j; } static final boolean DEBUG = false; void f4() { if (DEBUG && (fi < 3 || fi >4)) return; } void f5(final int i) { (i) = 1; } void f6(final int i) { (i)++; } void f7(final int i) { ++(i); } } class B extends a21 { public B() { fi = 0; } void f() { final Integer i; new Runnable() { public void run() { i = new Integer(4); } }; } } class a21_2 { final int i; a21_2() { i = 0; new Runnable() { public void run() { i = 0; } }; } } class Foo { private final Foo next; public Foo(Foo previous) { this.next = null; if (previous != null) { previous.next = this; } } } class T1 { private final int i1; private final int i2; private final int i3; private final int i4; { (i1)++; ++(i2); i3 += 1; (i4) = 1; ()++; } } class T3 { private final boolean b; { assert false : "" + (b = true); // if assignment reachable, assert will not complete normally b = true; // compiles System.out.println(b); } } class T3a { private final boolean b; { try { assert false : "" + (b = true); } catch(IllegalArgumentException t) {} b = true; // red System.out.println(b); } } class T29 { // IDEA-186306 private final int j; T29 (int b) { do { j = 34; // guaranteed to only be executed once if (true) break; } while (b == 1); } } class T29a { private final int j; T29a (int b) { do { j = 34; // not guaranteed by JLS to only be executed once if (j > 0) break; } while (b == 1); } } class TX { private final int i; private final int j; private final int k; TX() { (i) = 1; (i) = 1; (j) = 1; (j)++; (k)++; } } // IDEA-186321 class ForLoop { private final int i; { i = 1; for(;;i = 2, i = 3) { break; } } private final int j; { for(;;j = 2) { j = 1; break; } } } // IDEA-186305 class Asserts { final int x; { x = 1; assert true : x = 2; } final int x1; { x1 = 1; assert false : x1 = 2; } final int y; { try { assert true : y = 2; } catch (Throwable t) {} // javac accepts this, though this looks strange y = 1; } final int y1; { try { assert false : y1 = 2; } catch (Throwable t) {} y1 = 1; } } // IDEA-186304 class IncrementInUnreachableBranch { private final int i; { if (true) { i = 2; } else { System.out.println(i); // unreachable i++; } } private final int j; { if (true) { j = 2; } else { System.out.println(j); // unreachable j = j + 1; } } } class AssignmentInUnreachablePolyadic { private final boolean b; { if (false && (b = false)) ; if (true && (b = false)) ; } private final boolean bb; { if (false && (bb = false) && (bb = true)) ; } private final boolean bbb; { if (false && (bbb = true)) { } else { bbb = false; } } private final boolean bbbb; { if (false && (bbbb = false) && (bbbb = true)) ; else if (true && (bbbb = false)) ; } } class QualifiedThis { final int x; QualifiedThis() { QualifiedThis.this.x = 5; this.x = 5; } } class ParenthesizedThis { final int x; final int y = (this).x + 1; ParenthesizedThis() { (this).x = 5; // javac disallows this -- probably a bug in javac this.x = 6; } } class NestedSwitch { public static void main(String[] args) { for(int i = 0; i < 8; i++) { switch (i) { case 0: break; default: switch (i+1) { default: final int var; var++; } } } } }