| // Test case for issue #775 |
| // https://github.com/typetools/checker-framework/issues/775 |
| public class UnionCrash { |
| void foo(MyInterface<Throwable> param) throws Throwable { |
| try { |
| bar(); |
| } catch (MyExceptionA | MyExceptionB ex1) { |
| try { |
| bar(); |
| } catch (SubMyExceptionA | MyExceptionB ex2) { |
| // This call cause a crash |
| typeVar(ex1, ex2); |
| } |
| } |
| } |
| |
| <T extends Throwable> void typeVar(T param, T param2) {} |
| |
| void bar() throws MyExceptionA, MyExceptionB {} |
| |
| interface MyInterface<T> {} |
| |
| class MyExceptionA extends Throwable implements Cloneable, MyInterface<String> {} |
| |
| class MyExceptionB extends Throwable implements Cloneable, MyInterface<String> {} |
| |
| class SubMyExceptionA extends MyExceptionA {} |
| } |