| // Test for Issue 293: |
| // https://github.com/typetools/checker-framework/issues/293 |
| |
| public class Issue293 { |
| void test1() { |
| String s; |
| try { |
| s = read(); |
| } catch (Exception e) { |
| // Because of definite assignment, s cannot be mentioned here. |
| write("Catch."); |
| return; |
| } finally { |
| // Because of definite assignment, s cannot be mentioned here. |
| write("Finally."); |
| } |
| |
| // s is definitely initialized here. |
| write(s); |
| } |
| |
| void test2() { |
| String s2 = ""; |
| try { |
| } finally { |
| write(s2); |
| } |
| } |
| |
| void test3() throws Exception { |
| String s = ""; |
| try { |
| throw new Exception(); |
| } finally { |
| write(s); |
| } |
| } |
| |
| void test4() throws Exception { |
| String s = ""; |
| try { |
| if (true) { |
| throw new Exception(); |
| } else { |
| s = null; |
| } |
| } finally { |
| // :: error: argument |
| write(s); |
| } |
| } |
| |
| String read() throws Exception { |
| throw new Exception(); |
| } |
| |
| void write(String p) { |
| System.out.println(p); |
| } |
| } |