// vars double initialization import java.io.*; import java.net.*; public class a21 { void f1(int i) { final int j; j = 2; j = 2; } void f2(int i) { final int j; if (i==3) j = 2; else j = 5; j = 2; } void f3(int i) { final int j; if (i==4) j = 2; j = 2; } void f5(int i) { final int j; j = 2; if (i==3) return; j = 2; } void f6(int i) { final int j; switch (i) { case 1: j = 2; } j = 2; } void f7(int i) { final int j; while (i < 4) { j = 2; final int ii = 4; i+=ii; } } void f8(String k) { if (k != null) { final String i; if (k.equals("!")) i = "3"; if (k.equals("!")) i = "2"; } } void f9() { final Object type; try { type = null; } catch (Exception e) { type = null; } } void f10() { final int k; if (false) { k=0; //< error descr="Variable 'k' might already have been assigned to">k< /error>=0; } } class Foo { final int k; Foo() { k=0; k=0; } } void cf1(int i) { final int j; final int j1 = 3; j = 5; final int unused; final int j2; if (j == 3) j2 = 4; final int j3; if (j==4) j3 = 5; else j3 = 6; final int j4 = j3 + 6; final int j5; while (i != 9) { if (j == 8) { j5 = 9; break; } } } final boolean FB = true; void cf2() { final int k; if (!FB) { k = 4; } // < error descr="Variable 'k' might already have been assigned to">k< /error>=0; } // todo: // in IDEA Variable 'b' might not have been initialized // in javac: OK /* void f2() { boolean b; boolean c = true; if (c && false) { c = b; } } */ } class A { final int k; A() { for (;;) { k=0; } } } class Example { public int method(boolean b) { if (b) { final int indent; indent = 0; return 0; } else { new Runnable(){} } } }