| import org.checkerframework.checker.nullness.qual.*; |
| |
| public class Exceptions { |
| void exceptionParam(@Nullable Exception m) { |
| // :: error: (dereference.of.nullable) |
| m.getClass(); // should emit error |
| } |
| |
| void nonnullExceptionParam(@NonNull Exception m) { |
| m.getClass(); |
| } |
| |
| void exception(@Nullable Exception m) { |
| try { |
| |
| } catch (Exception e) { |
| // Note that this code is dead. |
| e.getClass(); |
| // :: error: (dereference.of.nullable) |
| m.getClass(); // should emit error |
| } |
| } |
| |
| void throwException() { |
| int a = 0; |
| if (a == 0) { |
| // :: error: (throwing.nullable) |
| throw null; |
| } else if (a == 1) { |
| RuntimeException e = null; |
| // :: error: (throwing.nullable) |
| throw e; |
| } else { |
| RuntimeException e = new RuntimeException(); |
| throw e; |
| } |
| } |
| |
| void reassignException() { |
| try { |
| } catch (RuntimeException e) { |
| // Note that this code is dead. |
| // :: error: (assignment) |
| e = null; |
| throw e; |
| } |
| } |
| } |