BadVPN – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 process main {
2 var("0") x;
3  
4 var("false") backtrack_check;
5 backtrack_point() point;
6 If (backtrack_check) {
7 val_equal(x, "10") a;
8 assert(a);
9 call("phase2", {});
10 };
11  
12 process_manager() mgr;
13  
14 mgr->start("name", "increment", {"1", "2", "false"});
15 val_equal(x, "1") a;
16 assert(a);
17  
18 mgr->stop("name");
19 val_equal(x, "3") a;
20 assert(a);
21  
22 mgr->start("name", "increment", {"3", "4", "true"});
23 val_equal(x, "6") a;
24 assert(a);
25  
26 mgr->stop("name");
27 val_equal(x, "6") a;
28 assert(a);
29  
30 mgr->start("name", "increment", {"5", "6", "false"});
31 val_equal(x, "6") a;
32 assert(a);
33  
34 backtrack_check->set("true");
35 point->go();
36 }
37  
38 template phase2 {
39 var("0") x;
40  
41 var("false") backtrack_check;
42 backtrack_point() point;
43 If (backtrack_check) {
44 val_equal(x, "10") a;
45 assert(a);
46 call("phase3", {});
47 };
48  
49 process_manager() mgr;
50  
51 mgr->start("name", "increment", {"1", "2", "true"});
52 val_equal(x, "1") a;
53 assert(a);
54  
55 mgr->stop("name");
56 val_equal(x, "1") a;
57 assert(a);
58  
59 mgr->start("name", "increment", {"3", "4", "true"});
60 val_equal(x, "1") a;
61 assert(a);
62  
63 depend("INC_DONE");
64 val_equal(x, "6") a;
65 assert(a);
66  
67 backtrack_check->set("true");
68 point->go();
69 }
70  
71 template phase3 {
72 var("0") x;
73  
74 var("false") backtrack_check;
75 backtrack_point() point;
76 If (backtrack_check) {
77 val_equal(x, "10") a;
78 assert(a);
79 exit("0");
80 };
81  
82 process_manager() mgr;
83  
84 mgr->start("increment", {"1", "2", "false"});
85 val_equal(x, "1") a;
86 assert(a);
87  
88 mgr->start("increment", {"3", "4", "false"});
89 val_equal(x, "4") a;
90 assert(a);
91  
92 backtrack_check->set("true");
93 point->go();
94 }
95  
96 template increment {
97 var(_arg0) amount;
98 var(_arg1) amount_deinit;
99 var(_arg2) do_sleep;
100 imperative("<none>", {}, "increment_deinit_inc", {}, "10000");
101 num_add(_caller.x, amount) new_x;
102 _caller.x->set(new_x);
103 If (do_sleep) {
104 sleep("0", "0");
105 };
106 provide("INC_DONE");
107 }
108  
109 template increment_deinit_inc {
110 num_add(_caller._caller.x, _caller.amount_deinit) new_x;
111 _caller._caller.x->set(new_x);
112 }