| import org.checkerframework.checker.nullness.qual.*; |
| |
| public class Synchronization { |
| |
| // Plain |
| public void bad() { |
| Object o = null; |
| // :: error: (locking.nullable) |
| synchronized (o) { |
| } // should emit error |
| } |
| |
| public void ok() { |
| // NonNull specifically |
| @NonNull Object o1 = "m"; |
| synchronized (o1) { |
| } |
| } |
| |
| public void flow() { |
| Object o = null; |
| o = "m"; |
| synchronized (o) { |
| } // valid |
| o = null; |
| // :: error: (locking.nullable) |
| synchronized (o) { |
| } // invalid |
| } |
| |
| public Synchronization() { |
| synchronized (this) { |
| } |
| } |
| } |