diff options
| author | _ov4 <ov4@ov4.org> | 2026-10-17 08:34:42 +0000 |
|---|---|---|
| committer | _ov4 <ov4@ov4.org> | 2026-10-17 08:34:42 +0000 |
| commit | abd56ef20bc8061bbecec29edd1301d324c2cb34 (patch) | |
| tree | 8da9a14372a60d4df8bf58693c62c187765e7240 /tests/i/class-raii/program.cps | |
| parent | 59e3c50bcd58130e81e1f57b21d6e57b4d4aba6d (diff) | |
feat(classes): destroy stack objects at scope exit
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'tests/i/class-raii/program.cps')
| -rw-r--r-- | tests/i/class-raii/program.cps | 49 |
1 files changed, 49 insertions, 0 deletions
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" |
