From abd56ef20bc8061bbecec29edd1301d324c2cb34 Mon Sep 17 00:00:00 2001 From: _ov4 Date: Sat, 17 Oct 2026 08:34:42 +0000 Subject: feat(classes): destroy stack objects at scope exit Co-Authored-By: Claude Opus 5.5 --- tests/i/class-raii/program.cps | 49 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 tests/i/class-raii/program.cps (limited to 'tests/i/class-raii/program.cps') diff --git a/tests/i/class-raii/program.cps b/tests/i/class-raii/program.cps new file mode 100644 index 0000000..ff350f9 --- /dev/null +++ b/tests/i/class-raii/program.cps @@ -0,0 +1,49 @@ +CLASS Traced + Id : INTEGER + PROCEDURE NEW() + Id <- 0 + ENDPROCEDURE + PROCEDURE DELETE() + OUTPUT "destroy:", Id + ENDPROCEDURE +ENDCLASS +TYPE Wrapped + DECLARE Item : Traced +ENDTYPE +PROCEDURE Copy(Value : Traced) + DECLARE Local : Traced + Local.Id <- 20 + Value.Id <- 21 +ENDPROCEDURE +PROCEDURE Work() + DECLARE First : Traced + First.Id <- 1 + DECLARE Rebound : Traced + Rebound.Id <- 2 + Rebound <- NEW Traced() + Rebound.Id <- 99 + DECLARE I : INTEGER + FOR I <- 1 TO 3 + DECLARE Again : Traced + Again.Id <- 3 + Again.Id <- I + 30 + NEXT I + DECLARE Arr : ARRAY[1:2] OF Plain + Arr[1].Item.Id <- 41 + Arr[2].Item.Id <- 42 + DECLARE Rec : Wrapped + Rec.Item.Id <- 50 + CALL Copy(First) + IF TRUE THEN + RETURN + ENDIF + DECLARE Never : Traced + Never.Id <- 77 +ENDPROCEDURE +CLASS Plain + Item : Traced +ENDCLASS +DECLARE Global : Traced + Global.Id <- 100 +CALL Work() +OUTPUT "main end" -- cgit v1.3.1-4-g156e