/*
* @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
}
}