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