aboutsummaryrefslogtreecommitdiff
path: root/tests/i/class-delete/program.cps
diff options
context:
space:
mode:
Diffstat (limited to 'tests/i/class-delete/program.cps')
-rw-r--r--tests/i/class-delete/program.cps35
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/i/class-delete/program.cps b/tests/i/class-delete/program.cps
new file mode 100644
index 0000000..492c032
--- /dev/null
+++ b/tests/i/class-delete/program.cps
@@ -0,0 +1,35 @@
+CLASS Leaf
+ Value : INTEGER
+ PROCEDURE DELETE()
+ OUTPUT "leaf:", Value
+ ENDPROCEDURE
+ENDCLASS
+CLASS Pair
+ Left : Leaf
+ Right : Leaf
+ PROCEDURE NEW()
+ Left.Value <- 1
+ Right.Value <- 2
+ ENDPROCEDURE
+ PROCEDURE DELETE()
+ OUTPUT "pair"
+ ENDPROCEDURE
+ENDCLASS
+DECLARE Obj : Pair
+Obj <- NEW Pair()
+Obj.DELETE()
+CALL Obj.DELETE()
+DELETE Obj
+TRY
+ DELETE Obj
+CATCH
+ OUTPUT "double caught"
+ENDTRY
+DECLARE Stack : Pair
+TRY
+ DELETE Stack
+CATCH
+ OUTPUT "stack caught"
+ENDTRY
+DECLARE Items : ARRAY[1:2] OF Pair
+Items[2].Right.DELETE()