aboutsummaryrefslogtreecommitdiff
path: root/tests/iii/class-new-errors
diff options
context:
space:
mode:
author_ov4 <ov4@ov4.org>2026-10-17 06:58:13 +0000
committer_ov4 <ov4@ov4.org>2026-10-17 06:58:13 +0000
commitc372c08dc940db58f1da9cadeb64b4cb3c837704 (patch)
tree70636fd3a485eaf16fb7f442c294ac066c76e1a1 /tests/iii/class-new-errors
parent74b6d06711afd3efbbc47436f1491900994313f3 (diff)
fix(classes): preserve method-only heap objects and document NEW
Allocate at least one byte for method-only classes so their heap addresses remain usable through pointers. Complete constructor diagnostics, field-order and exception coverage, document construction and rebinding, and highlight NEW. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'tests/iii/class-new-errors')
-rw-r--r--tests/iii/class-new-errors/case.json12
-rw-r--r--tests/iii/class-new-errors/program.cps5
2 files changed, 17 insertions, 0 deletions
diff --git a/tests/iii/class-new-errors/case.json b/tests/iii/class-new-errors/case.json
index 8ce52ed..7f33ffd 100644
--- a/tests/iii/class-new-errors/case.json
+++ b/tests/iii/class-new-errors/case.json
@@ -27,6 +27,18 @@
{
"reason": "NEW target must have type Hidden",
"line": 26
+ },
+ {
+ "reason": "Cannot access private method NEW of type Hidden",
+ "line": 28
+ },
+ {
+ "reason": "has no constructor NEW",
+ "line": 30
+ },
+ {
+ "reason": "Cannot coerce value of LLVM type to target type INTEGER",
+ "line": 31
}
]
}
diff --git a/tests/iii/class-new-errors/program.cps b/tests/iii/class-new-errors/program.cps
index 3a9e9c2..78db102 100644
--- a/tests/iii/class-new-errors/program.cps
+++ b/tests/iii/class-new-errors/program.cps
@@ -24,3 +24,8 @@ B <- NEW Box(1)
R <- NEW Required
R <- NEW Required()
B <- NEW Hidden
+PROCEDURE Forbidden(Target : Hidden)
+ Target <- NEW Hidden()
+ENDPROCEDURE
+B <- NEW Box("bad")
+R <- NEW Required("bad")