| import org.checkerframework.framework.testchecker.flowexpression.qual.FlowExp; |
| |
| public class Canonicalization { |
| |
| class LockExample { |
| protected final Object myLock = new Object(); |
| protected @FlowExp("myLock") Object locked; |
| protected @FlowExp("this.myLock") Object locked2; |
| |
| public @FlowExp("myLock") Object getLocked() { |
| return locked; |
| } |
| } |
| |
| class Use { |
| final LockExample lockExample1 = new LockExample(); |
| final Object myLock = new Object(); |
| |
| @FlowExp("lockExample1.myLock") Object o1 = lockExample1.locked; |
| |
| @FlowExp("lockExample1.myLock") Object o2 = lockExample1.locked2; |
| |
| @FlowExp("myLock") |
| // :: error: (assignment) |
| Object o3 = lockExample1.locked; |
| |
| @FlowExp("this.myLock") |
| // :: error: (assignment) |
| Object o4 = lockExample1.locked2; |
| |
| @FlowExp("lockExample1.myLock") Object oM1 = lockExample1.getLocked(); |
| |
| @FlowExp("myLock") |
| // :: error: (assignment) |
| Object oM2 = lockExample1.getLocked(); |
| |
| @FlowExp("this.myLock") |
| // :: error: (assignment) |
| Object oM3 = lockExample1.getLocked(); |
| } |
| } |