Project Coin try-with-resource support, take 4

This commit is contained in:
Roman Shevchenko
2011-02-24 20:02:33 +01:00
parent 695ee8b40f
commit 9e0bef7dcd
38 changed files with 316 additions and 415 deletions
@@ -14,24 +14,22 @@ class C {
try (MyResource r = new MyResource()) { r.doSomething(); }
catch (E1 | E2 | E3 ignore) { }
try (new MyResource()) { }
try (MyResource r = new MyResource()) { }
catch (E1 | E3 ignore) { }
MyResource r;
try (<error descr="Unhandled exception from auto-closeable resource: C.E3">r = new MyResource()</error>) { }
try (<error descr="Unhandled exception from auto-closeable resource: C.E3">MyResource r = new MyResource()</error>) { }
catch (E1 e) { }
try (r = <error descr="Unhandled exception: C.E1">new MyResource()</error>) { }
try (MyResource r = <error descr="Unhandled exception: C.E1">new MyResource()</error>) { }
catch (E3 e) { }
try (r = <error descr="Unhandled exception: C.E1">new MyResource()</error>) { }
try (MyResource r = <error descr="Unhandled exception: C.E1">new MyResource()</error>) { }
}
void m2() throws Exception {
try (<error descr="Incompatible types. Found: 'java.lang.Object', required: 'java.lang.AutoCloseable'">Object r = new MyResource()</error>) { }
try (<error descr="Incompatible types. Found: 'java.lang.String', required: 'java.lang.AutoCloseable'">"resource"</error>) { }
try (<error descr="Incompatible types. Found: 'java.lang.String', required: 'java.lang.AutoCloseable'">AutoCloseable r = "resource"</error>) { }
}
void m3(int p) throws Exception {
@@ -56,7 +54,7 @@ class C {
MyResource r = null;
try (MyResource <error descr="Variable 'r' is already defined in the scope">r</error> = new MyResource()) { }
try (r = new MyResource()) { }
try (MyResource rr = r) { }
try (MyResource <error descr="Variable 'p' is already defined in the scope">p</error> = new MyResource()) { }
new Runnable() {
@@ -6,35 +6,28 @@ class C {
}
void m1() throws Exception {
MyResource r1;
try (r1 = new MyResource()) {
try (MyResource r1 = new MyResource()) {
System.out.println(r1);
}
try (MyResource r2 = new MyResource()) {
System.out.println(r2);
}
MyResource r3 = new MyResource();
try (MyResource r = r3) {
MyResource r2 = new MyResource();
try (MyResource r = r2) {
System.out.println(r);
System.out.println(r2);
}
}
void m2() throws Exception {
MyResource r1 = <warning descr="Variable 'r1' initializer 'null' is redundant">null</warning>;
try (r1 = new MyResource()) {
System.out.println(r1);
}
// todo: test in IG
//MyResource < warning descr="Local variable 'r1' is redundant">r1</warning> = null;
//try (MyResource r = r1) {
// System.out.println(r);
//}
MyResource r2 = null;
System.out.println(r2);
try (r2 = <warning descr="The value 'new MyResource()' assigned to r2 is never used">new MyResource()</warning>) { }
try (MyResource <warning descr="Variable 'r2' is never used">r2</warning> = new MyResource()) { }
try (MyResource <warning descr="Variable 'r3' is never used">r3</warning> = new MyResource()) { }
MyResource <warning descr="Variable 'r4' is never assigned">r4</warning>;
try (MyResource r = <error descr="Variable 'r4' might not have been initialized">r4</error>) {
MyResource <warning descr="Variable 'r3' is never assigned">r3</warning>;
try (MyResource r = <error descr="Variable 'r3' might not have been initialized">r3</error>) {
System.out.println(r);
}
}