Capture stable state.
[IRC.git] / Robust / src / Tests / OwnershipAnalysisTest / test01 / test01.java
1 public class Parameter {
2     flag w;
3     int a, b;
4     Parameter f, g;
5
6     public Parameter() { a = 0; b = 0; f = null; g = null; }
7
8     public void bar() { foo(); }
9     public void foo() { bar(); }
10 }
11
12 public class Penguin {
13     int x, y;
14
15     public Penguin() { x = 0; y = 0; }
16
17     public void bar() { x = 1; }
18 }
19
20 task Startup( StartupObject s{ initialstate } ) {
21
22     Parameter p = new Parameter(){!w};
23     p.foo();
24
25     Penguin g = new Penguin();
26     g.bar();
27
28     taskexit( s{ !initialstate } );
29 }
30
31 /*
32 task aliasFromObjectAssignment
33     ( Parameter p1{!w}, Parameter p2{!w} ) {
34     
35     p1.f = p2.g;
36
37     taskexit( p1{w}, p2{w} );
38 }
39
40 task noAliasFromPrimitiveAssignment
41     ( Parameter p1{!w}, Parameter p2{!w} ) {
42     
43     p1.a = p2.b;
44
45     taskexit( p1{w}, p2{w} );
46 }
47
48 task aliasWithTwoLinks
49     ( Parameter p1{!w}, Parameter p2{!w} ) {
50     
51     Parameter j = p1.f;
52     p2.f = j;
53
54     taskexit( p1{w}, p2{w} );
55 }
56
57 task aliasWithThreeLinks
58     ( Parameter p1{!w}, Parameter p2{!w} ) {
59     
60     Parameter j = p1.f;
61     Parameter k = j;
62     p2.f = k;
63
64     taskexit( p1{w}, p2{w} );
65 }
66
67 task noAliasBreakLinks
68     ( Parameter p1{!w}, Parameter p2{!w} ) {
69     
70     Parameter j = p1.f;
71     Parameter k = j;
72     k = p2.f;
73     p2.f = k;
74
75     taskexit( p1{w}, p2{w} );
76 }
77
78 task possibleAliasConditional
79     ( Parameter p1{!w}, Parameter p2{!w} ) {
80     
81     Parameter y;
82
83     if( p1.a == 0 ) {
84         y = p1.f;
85     } else {
86         y = p2.f;
87     }
88
89     p2.g = y;
90
91     taskexit( p1{w}, p2{w} );
92 }
93 */
94 task bunchOfPaths
95     ( Parameter p1{!w}, Parameter p2{!w} ) {
96
97     Parameter y;
98
99     for( int i =0; i < 100; ++i ) {
100
101         if( y == p1 ) {
102             Parameter z;
103
104             for( int j = 0; i < 50; ++j ) {
105                 if( z == y ) {
106                     p1.f = y;
107                 } else {
108                     z = p2.g;
109                 }
110
111                 p1.f = z;
112             }
113
114             y = p1.g;
115         } else {
116
117             p2.f = y;
118         }
119     }
120
121     p1.f = p2.g;
122
123
124     taskexit( p1{w}, p2{w} );
125 }
126 /*
127 task literalTest( Parameter p1{!w} ) {
128     Parameter x = null;
129     int y = 5;
130     String s = "Dude";
131
132     taskexit( p1{w} );
133 }
134
135 task newNoAlias
136     ( Parameter p1{!w}, Parameter p2{!w} ) {
137
138     for( int i = 0; i < 1; ++i ) {
139         p1.f = new Parameter();
140     }
141
142     taskexit( p1{w}, p2{w} );
143 }
144
145 task newPossibleAlias
146     ( Parameter p1{!w}, Parameter p2{!w} ) {
147
148     Parameter x, y;
149
150     for( int i = 0; i < 1; ++i ) {
151         p1.f = new Parameter();
152         if( true ) {
153             x = p1.f;
154         } else {
155             y = p1.f;
156         }
157     }
158
159     p2.f = y;
160
161     taskexit( p1{w}, p2{w} );
162 }
163 */