/* Test various permutations of the destroy method */ /* First, the class that tracks when destroys are done */ class test { var myname = ""; public proc create(name) { myname = name; } public proc destroy() { "Help! My name is \"", myname, "\" and I'm being destroyed!\n"; } } /* Test destroys in the context of class instances */ class other { var foo; public proc create() { foo = new test("other"); } } /* Test destroys in the context of local variables being popped */ proc foo() { var a; a = new test("foo"); } proc main() { var a; var arr; /* Test destroys in the context of local variables being overwritten */ a = new test("a"); a = nil; oadl::gc(); /* Call the local-variable-popped test */ foo(); oadl::gc(); /* Test destroys in the context of array elements being overwritten */ arr = new Array(1); arr[0] = new test("arr[0]"); arr[0] = nil; oadl::gc(); /* Test destroys in the context of arrays being destroyed */ arr[0] = new test("arr"); arr = nil; oadl::gc(); /* Test destroys in the context of containing objects being destroyd */ a = new other(); a = nil; oadl::gc(); }