blob: e7d38aa4c98634bb737eca423b71e6c73fd4a03e [file] [log] [blame]
import org.checkerframework.checker.lock.qual.GuardedBy;
public class TestConcurrentSemantics2 {
final Object a = new Object();
final Object b = new Object();
@GuardedBy("a") Object o;
void method() {
o = null;
// Assume the following happens:
// * Context switch to a different thread.
// * bar() is called on the other thread.
// * Context switch back to this thread.
// o is no longer null and an assignment error should be issued.
// :: error: (assignment)
@GuardedBy("b") Object o2 = o;
}
void bar() {
o = new Object();
}
// Test that field assignments do not cause their type to be refined:
@GuardedBy("a") Object myObject1 = null;
// :: error: (assignment)
@GuardedBy("b") Object myObject2 = myObject1;
}