+/*
public class Parameter {
flag w;
int a, b;
public void doTheBaw( Voo v ) { v = new Voo(); }
}
+*/
public class Foo {
flag f;
public Foo x;
public Foo y;
+ /*
public void ruinSomeFoos( Foo a, Foo b ) {
a.x = b.x;
}
p1.x = f1;
p1.x = f2;
}
+ */
}
taskexit( s{ !initialstate } );
}
-
+/*
task NewObjectA( Foo a{ f }, Foo b{ f } ) {
Foo c = new Foo();
taskexit( a{ !f }, b{ !f } );
}
+*/
+/*
task NewObjectC( Foo a{ f }, Foo b{ f } ) {
+ Foo z = new Foo();
+ a.x = z;
+ a.y = z;
+
Foo c;
while( false ) {
taskexit( a{ !f }, b{ !f } );
}
+*/
+
+
+task forMethod( Foo p0{ f } ) {
+
+ Foo a0;
+ Foo a1;
+
+ while( false ) {
+ a1 = a0;
+ if( false ) {
+ a0 = new Foo();
+ }
+ }
+
+ Foo z = new Foo();
+ a1.x = z;
+ z.x = a1;
+
+
+ taskexit( p0{ !f } );
+}
+/*
// this task allocates a new object, so there should
// be a heap region for the parameter, and several
// heap regions for the allocation site, but the label
taskexit( p0{ !f } );
}
+*/