package checkers.jimmu.examples; import checkers.jimmu.quals.*; /** * Example for ownership resolving. * * @author saf */ public class OwnershipPassing { public static class A { public static Integer st; public Integer owner; private @Rep Integer rep; private @Peer Integer peer; public @OwnedBy("owner") Integer owned; public void setRep(@Rep Integer n) { rep = n; } public void setPeer(@Peer Integer n) { this.peer = n; } public void setOwned(@OwnedBy("owner") Integer n) { this.owned = n; } public @OwnedBy("owner") Integer getOwned() { return owned; } public A() { } } static void process(A a) { @OwnedBy("a") Integer x = null; a.setRep(x); a.setPeer(x); @OwnedBy("a") A b = new /*@OwnedBy("a")*/ A(); @OwnedBy("a") Integer y = null; b.setRep(y); b.setPeer(y); @OwnedBy("a.owner") Integer z = null; a.setOwned(z); a.owned = new /*@OwnedBy("a.owner")*/ Integer("0"); } static Integer main(String[] args) { process(new A()); A a = new A(); @OwnedBy("a") Integer x = null; @OwnedBy("a.owner") Integer y = null; a.setRep(x); a.setOwned(y); @OwnedBy("a.owner") Integer z = a.getOwned(); return a.st; } }