/* * @test /nodynamiccopyright/ * @bug 6558548 7039937 * @summary The compiler needs to be aligned with clarified specification of throws * @compile/fail/ref=T6558548_latest.out -XDrawDiagnostics T6558548.java * @compile/fail/ref=T6558548_6.out -source 6 -Xlint:-options -XDrawDiagnostics T6558548.java */ class T6558548 { void nothing() {} void checked() throws InterruptedException {} void runtime() throws IllegalArgumentException {} void m1a() { try { throw new java.io.FileNotFoundException(); } catch(java.io.FileNotFoundException exc) { } catch(java.io.IOException exc) { } // 6: ok; latest: unreachable } void m1b() { try { throw new java.io.IOException(); } catch(java.io.FileNotFoundException exc) { } catch(java.io.IOException exc) { } //ok } void m1c() { try { throw new java.io.FileNotFoundException(); } catch(java.io.FileNotFoundException exc) { } catch(Exception ex) { } //ok (Exception/Throwable always allowed) } void m1d() { try { throw new java.io.FileNotFoundException(); } catch(java.io.FileNotFoundException exc) { } catch(Throwable ex) { } //ok (Exception/Throwable always allowed) } void m3() { try { checked(); } catch(Exception exc) { } //ok } void m4() { try { runtime(); } catch(Exception exc) { } //ok } void m5() { try { nothing(); } catch(Throwable exc) { } //ok } void m6() { try { checked(); } catch(Throwable exc) { } //ok } void m7() { try { runtime(); } catch(Throwable exc) { } //ok } void m9() { try { checked(); } catch(Error exc) { } catch(Throwable exc) { } //ok } void m10() { try { runtime(); } catch(Error exc) { } catch(Throwable exc) { } //ok } void m11() { try { nothing(); } catch(Error exc) { } catch(Throwable exc) { } //ok } void m12() { try { checked(); } catch(RuntimeException exc) { } catch(Throwable exc) { } // ok } void m13() { try { runtime(); } catch(RuntimeException exc) { } catch(Throwable exc) { } // ok } void m14() { try { nothing(); } catch(RuntimeException exc) { } catch(Throwable exc) { } // ok } void m15() { try { checked(); } catch(RuntimeException exc) { } catch(Exception exc) { } //ok } void m16() { try { runtime(); } catch(RuntimeException exc) { } catch(Exception exc) { } //6: ok; latest: ok (Exception/Throwable always allowed) } void m17() { try { nothing(); } catch(RuntimeException exc) { } catch(Exception exc) { } //6: ok; latest: ok (Exception/Throwable always allowed) } void m18() { try { checked(); } catch(RuntimeException exc) { } catch(InterruptedException exc) { } catch(Exception exc) { } //6: ok; latest: ok (Exception/Throwable always allowed) } void m19() { try { runtime(); } catch(RuntimeException exc) { } catch(InterruptedException exc) { } //never thrown in try catch(Exception exc) { } //6: ok; latest: ok (Exception/Throwable always allowed) } void m20() { try { nothing(); } catch(RuntimeException exc) { } catch(InterruptedException exc) { } //never thrown in try catch(Exception exc) { } //6: ok; latest: ok (Exception/Throwable always allowed) } void m21() { try { checked(); } catch(RuntimeException exc) { } catch(Exception exc) { } // ok } void m22() { try { runtime(); } catch(RuntimeException exc) { } catch(Exception exc) { } // 6: ok; latest: ok (Exception/Throwable always allowed) } void m23() { try { nothing(); } catch(RuntimeException exc) { } catch(Exception exc) { } // 6: ok; latest: ok (Exception/Throwable always allowed) } void m24() { try { checked(); } catch(RuntimeException exc) { } catch(Error exc) { } catch(Throwable exc) { } //ok } void m25() { try { runtime(); } catch(RuntimeException exc) { } catch(Error exc) { } catch(Throwable exc) { } //6: ok; latest: ok (Exception/Throwable always allowed) } void m26() { try { nothing(); } catch(RuntimeException exc) { } catch(Error exc) { } catch(Throwable exc) { } //6: ok; latest: ok (Exception/Throwable always allowed) } void m27() { try { checked(); } catch(RuntimeException exc) { } catch(Error exc) { } catch(InterruptedException exc) { } catch(Throwable exc) { } //6: ok; latest: ok (Exception/Throwable always allowed) } void m28() { try { runtime(); } catch(RuntimeException exc) { } catch(Error exc) { } catch(InterruptedException exc) { } //never thrown in try catch(Throwable exc) { } //6: ok; latest: ok (Exception/Throwable always allowed) } void m29() { try { nothing(); } catch(RuntimeException exc) { } catch(Error exc) { } catch(InterruptedException exc) { } //never thrown in try catch(Throwable exc) { } //6: ok; latest: ok (Exception/Throwable always allowed) } void m30() { try { checked(); } catch(RuntimeException exc) { } catch(Error exc) { } catch(Throwable exc) { } //ok } void m31() { try { runtime(); } catch(RuntimeException exc) { } catch(Error exc) { } catch(Throwable exc) { } //6: ok; latest: ok (Exception/Throwable always allowed) } void m32() { try { nothing(); } catch(RuntimeException exc) { } catch(Error exc) { } catch(Throwable exc) { } //6: ok; latest: ok (Exception/Throwable always allowed) } void m33() { try { checked(); } catch(InterruptedException exc) { } //ok } void m34() { try { runtime(); } catch(InterruptedException exc) { } //never thrown in try } void m35() { try { nothing(); } catch(InterruptedException exc) { } //never thrown in try } }