mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-25 10:51:06 +07:00
96 lines
3.3 KiB
Java
96 lines
3.3 KiB
Java
class C {
|
|
static class E extends Exception { }
|
|
static class E1 extends E { }
|
|
static class E2 extends E { }
|
|
static class E3 extends E { }
|
|
|
|
static class MyResource implements AutoCloseable {
|
|
public MyResource() throws E1 { }
|
|
public void doSomething() throws E2 { }
|
|
@Override public void close() throws E3 { }
|
|
}
|
|
|
|
interface I extends AutoCloseable { }
|
|
|
|
interface Gen<E extends Exception> extends AutoCloseable {
|
|
@Override void close() throws E;
|
|
|
|
class Impl implements Gen<E2> {
|
|
@Override public void close() throws E2 { }
|
|
}
|
|
}
|
|
|
|
interface GenRT extends Gen<RuntimeException> { }
|
|
|
|
void m1() {
|
|
try (MyResource r = new MyResource()) { r.doSomething(); }
|
|
catch (E1 | E2 | E3 ignore) { }
|
|
|
|
try (MyResource r = new MyResource()) { }
|
|
catch (E1 | E3 ignore) { }
|
|
|
|
try (<error descr="Unhandled exception from auto-closeable resource: C.E3">MyResource r = new MyResource()</error>) { }
|
|
catch (E1 e) { }
|
|
|
|
try (MyResource r = new <error descr="Unhandled exception: C.E1">MyResource</error>()) { }
|
|
catch (E3 e) { }
|
|
|
|
try (MyResource r = new <error descr="Unhandled exception: C.E1">MyResource</error>()) { }
|
|
|
|
try (<error descr="Unhandled exception from auto-closeable resource: java.lang.Exception">I r = null</error>) { System.out.println(r); }
|
|
}
|
|
|
|
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'">AutoCloseable r = "resource"</error>) { }
|
|
}
|
|
|
|
void m3(int p) throws Exception {
|
|
try (MyResource r = new MyResource()) {
|
|
r.doSomething();
|
|
<error descr="Cannot assign a value to final variable 'r'">r</error> = null;
|
|
int <error descr="Variable 'r' is already defined in the scope">r</error> = 0;
|
|
}
|
|
catch (E e) {
|
|
<error descr="Cannot resolve symbol 'r'">r</error> = null;
|
|
}
|
|
finally {
|
|
<error descr="Cannot resolve symbol 'r'">r</error> = null;
|
|
}
|
|
<error descr="Cannot resolve symbol 'r'">r</error> = null;
|
|
|
|
try (MyResource r = new MyResource(); MyResource <error descr="Variable 'r' is already defined in the scope">r</error> = new MyResource()) { }
|
|
|
|
try (MyResource r1 = new MyResource(); MyResource r2 = r1) { }
|
|
|
|
try (MyResource r1 = <error descr="Cannot resolve symbol 'r2'">r2</error>; MyResource r2 = r1) { }
|
|
|
|
MyResource r = null;
|
|
try (MyResource <error descr="Variable 'r' is already defined in the scope">r</error> = new MyResource()) { }
|
|
try (MyResource rr = r) { }
|
|
|
|
try (MyResource <error descr="Variable 'p' is already defined in the scope">p</error> = new MyResource()) { }
|
|
new Runnable() {
|
|
public void run() {
|
|
try (MyResource p = new MyResource()) { }
|
|
catch (E e) { }
|
|
}
|
|
}.run();
|
|
}
|
|
|
|
void m4() throws Exception {
|
|
try (MyResource r = <error descr="Variable 'r' might not have been initialized">r</error>) { }
|
|
|
|
MyResource r;
|
|
try (MyResource r1 = <error descr="Variable 'r' might not have been initialized">r</error>) { }
|
|
}
|
|
|
|
void m5() {
|
|
try (<error descr="Unhandled exception from auto-closeable resource: C.E2">Gen<E2> gen = new Gen.Impl()</error>) { }
|
|
}
|
|
|
|
void m6() {
|
|
try (GenRT gen = null) { }
|
|
}
|
|
} |