| /* /nodynamiccopyright/ */ // hard coded linenumbers in other tests - DO NOT CHANGE | |
| /* | |
| * Debuggee which exercises various types of control flow | |
| */ | |
| class ControlFlow { | |
| boolean b = true; | |
| int n = 22; | |
| public static void main(String args[]) throws Exception { | |
| (new ControlFlow()).go(); | |
| } | |
| void go() throws Exception { | |
| if (b) { | |
| System.out.println("if, no else"); | |
| } | |
| if (b) { | |
| System.out.println("if branch"); | |
| } else { | |
| throw new Exception("Wrong branch!?"); | |
| } | |
| if (!b) { | |
| throw new Exception("Wrong branch!?"); | |
| } else { | |
| System.out.println("else branch"); | |
| } | |
| try { | |
| throw new Exception(); | |
| } catch (Exception e) { | |
| System.out.println("caught exception"); | |
| } finally { | |
| System.out.println("finally"); | |
| } | |
| // This isn't control flow at the source level, but it is at the bytecode level | |
| synchronized (this) { | |
| System.out.println("synchronized"); | |
| } | |
| for (int i = 0; i < n; i++) { | |
| System.out.println("Loop iteration: " + (i+1) + "/" + n); | |
| } | |
| switch (n) { | |
| case 0: | |
| throw new Exception("Wrong branch!?"); | |
| case 1: | |
| throw new Exception("Wrong branch!?"); | |
| case 2: | |
| throw new Exception("Wrong branch!?"); | |
| case 3: | |
| throw new Exception("Wrong branch!?"); | |
| case 22: | |
| System.out.println("switch case"); | |
| break; | |
| default: | |
| throw new Exception("Wrong branch!?"); | |
| } | |
| switch (n) { | |
| case 0: | |
| throw new Exception("Wrong branch!?"); | |
| case 1: | |
| throw new Exception("Wrong branch!?"); | |
| case 2: | |
| throw new Exception("Wrong branch!?"); | |
| case 3: | |
| throw new Exception("Wrong branch!?"); | |
| default: | |
| System.out.println("switch default"); | |
| break; | |
| } | |
| } | |
| } |