summaryrefslogtreecommitdiff
path: root/Test/linear
diff options
context:
space:
mode:
authorGravatar qadeer <unknown>2014-05-03 10:06:13 -0700
committerGravatar qadeer <unknown>2014-05-03 10:06:13 -0700
commit36e016acf963b7c19d59640b11b4a40f2072943e (patch)
tree31a45e868059d0ffe54fc3d212261245ff97886a /Test/linear
parent121071b9f87d23eaeba176897b9655cd540fb694 (diff)
checkpoint
Diffstat (limited to 'Test/linear')
-rw-r--r--Test/linear/typecheck.bpl22
1 files changed, 15 insertions, 7 deletions
diff --git a/Test/linear/typecheck.bpl b/Test/linear/typecheck.bpl
index 187b3ff8..c8510909 100644
--- a/Test/linear/typecheck.bpl
+++ b/Test/linear/typecheck.bpl
@@ -20,7 +20,7 @@ procedure C()
function f(X): X;
-procedure {:yields} D()
+procedure {:yields} {:phase 1} D()
{
var {:linear "D"} a: X;
var {:linear "D"} x: X;
@@ -58,7 +58,9 @@ procedure {:yields} D()
call c, x := E(a, x);
+ yield;
par a := F(a) | x := F(a);
+ yield;
}
procedure E({:linear "D"} a: X, {:linear "D"} b: X) returns ({:linear "D"} c: X, {:linear "D"} d: X)
@@ -66,9 +68,9 @@ procedure E({:linear "D"} a: X, {:linear "D"} b: X) returns ({:linear "D"} c: X,
c := a;
}
-procedure {:yields} {:stable} F({:linear "D"} a: X) returns ({:linear "D"} c: X);
+procedure {:yields} {:phase 0} F({:linear "D"} a: X) returns ({:linear "D"} c: X);
-var{:linear "x"} g:int;
+var {:linear "x"} g:int;
procedure G(i:int) returns({:linear "x"} r:int)
{
@@ -81,23 +83,29 @@ modifies g;
g := r;
}
-procedure {:yields} {:stable} I({:linear ""} x:int) returns({:linear ""} x':int)
+procedure {:yields} {:phase 0} I({:linear ""} x:int) returns({:linear ""} x':int)
{
x' := x;
}
-procedure {:yields} {:stable} J()
+procedure {:yields} {:phase 0} J()
{
}
-procedure {:yields} P1({:linear ""} x:int) returns({:linear ""} x':int)
+procedure {:yields} {:phase 1} P1({:linear ""} x:int) returns({:linear ""} x':int)
{
+ yield;
par x' := I(x) | J();
+ yield;
call x' := I(x');
+ yield;
}
-procedure {:yields} P2({:linear ""} x:int) returns({:linear ""} x':int)
+procedure {:yields} {:phase 1} P2({:linear ""} x:int) returns({:linear ""} x':int)
{
+ yield;
call x' := I(x);
+ yield;
par x' := I(x') | J();
+ yield;
}