aboutsummaryrefslogtreecommitdiff
path: root/AGENTS
diff options
context:
space:
mode:
author_ov4 <ov4@ov4.org>2026-10-21 12:49:21 +0000
committer_ov4 <ov4@ov4.org>2026-10-21 12:49:21 +0000
commit97f743a41925e4346aa2c08f23ba432072318eca (patch)
tree736d18437bc92dadf9e736aafe68307bdee63ae4 /AGENTS
parent410dd10ffd3270e6f7972f1c9aeb07fb7812fee5 (diff)
docs(agents): drop fixed-bug history and stale status notes from PITFALLS
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Diffstat (limited to 'AGENTS')
-rw-r--r--AGENTS/PITFALLS/core-language.md15
-rw-r--r--AGENTS/PITFALLS/exceptions-and-c-interop.md8
-rw-r--r--AGENTS/PITFALLS/files-and-types.md6
-rw-r--r--AGENTS/PITFALLS/modules-and-stdlib.md2
-rw-r--r--AGENTS/PITFALLS/not-implemented.md12
5 files changed, 17 insertions, 26 deletions
diff --git a/AGENTS/PITFALLS/core-language.md b/AGENTS/PITFALLS/core-language.md
index a1ab62d..29c3fa4 100644
--- a/AGENTS/PITFALLS/core-language.md
+++ b/AGENTS/PITFALLS/core-language.md
@@ -11,23 +11,22 @@ source, most also by compiling and running test programs.
pointer dereferences, using the shared lvalue checks. Whole arrays and whole
records/classes remain unsupported INPUT targets.
- **Arrays cross function boundaries only as parameters.** `ArrayTable` is scoped per
- function now, so referencing another function's array fails cleanly as
+ function, so referencing another function's array fails cleanly as
"Undeclared array". Whole arrays pass as `ARRAY OF T` / `ARRAY[l:u,...] OF T`
parameters (BYVAL copies the entire buffer and never frees it); a whole-array
argument against a scalar parameter is still a compile error. FUNCTIONs cannot
RETURN arrays. A whole-array variable is also rejected as an operand or as a
- value of its element type (it used to leak its raw data pointer).
+ value of its element type.
- **Arrays are additionally block-scoped.** An array DECLAREd inside an
IF/WHILE/REPEAT/FOR/TRY/CATCH body is not visible after the block ("Undeclared
array") — its buffer setup and bound SSA values live inside the branch, so letting
- it escape meant wild-pointer writes or invalid IR. Scalars remain function-scoped
+ it escape would mean wild-pointer writes or invalid IR. Scalars remain function-scoped
(their alloca is hoisted to the entry block); declare at the top of the function
like the exam board intends and neither matters.
- **Parameter modes are sticky and BYREF is FUNCTION-forbidden (§8.3).**
- `(BYREF a : T, b : T)` makes `b` BYREF too — programs that relied on the old
- per-parameter reset (where `b` was silently BYVAL) change meaning. Literal
- arguments against an accidentally-BYREF parameter now fail with "BYREF argument
- must be a variable"; annotate `BYVAL` explicitly.
+ `(BYREF a : T, b : T)` makes `b` BYREF too. Literal arguments against an
+ accidentally-BYREF parameter fail with "BYREF argument must be a variable";
+ annotate `BYVAL` explicitly.
- **`/` always yields REAL** (double FDiv), even for two INTEGERs; integer division is
DIV/MOD only.
- CHR returns an owning one-byte STRING, not CHAR; CHR(0) retains one NUL byte.
@@ -36,7 +35,7 @@ source, most also by compiling and running test programs.
fractional digits for REAL.
- **`getExprTypeInfo` returns nullptr** for expressions it can't classify (null-check
it at any new call site) and internally defaults to INTEGER for unclassified
- arithmetic expressions; unknown or unmatched calls now diagnose and return nullptr.
+ arithmetic expressions; unknown or unmatched calls diagnose and return nullptr.
OUTPUT reports an error for a nullptr result.
- **CONSTANT** accepts only literals (including negative numeric literals), never
expressions or other names. Constants have lexical block scope and may shadow outer
diff --git a/AGENTS/PITFALLS/exceptions-and-c-interop.md b/AGENTS/PITFALLS/exceptions-and-c-interop.md
index 616a839..2362c01 100644
--- a/AGENTS/PITFALLS/exceptions-and-c-interop.md
+++ b/AGENTS/PITFALLS/exceptions-and-c-interop.md
@@ -10,12 +10,12 @@ Part of the [pitfalls index](../PITFALLS.md).
- Runtime checks are catchable; compiler errors are not. Runtime checks print the
source line and error reason to stderr before throwing, even when caught.
- Uncaught exceptions also print the generic termination message and return 1.
-- Native binaries must link the C++ runtime with LLVM 23's `clang++` (`clang++-23` on
- Debian/Ubuntu).
+- Native compilation links the C++ runtime automatically; manually linking emitted
+ `.ll` files must use LLVM 23's `clang++` (`clang++-23` on Debian/Ubuntu).
- Owned STRING values follow class cleanup during unwinding; raw array buffers are
not freed and files are not automatically closed.
-- Embedded ORC execution with LLVM 23 is exercised by nightly CI on Linux, Windows
- and macOS; check the native job results when changing platform-specific code.
+- Check the native nightly job results when changing platform-specific code
+ (CI coverage: [ARCH/BUILD.md](../ARCH/BUILD.md)).
## C type extensions
diff --git a/AGENTS/PITFALLS/files-and-types.md b/AGENTS/PITFALLS/files-and-types.md
index 60f1e53..61524cb 100644
--- a/AGENTS/PITFALLS/files-and-types.md
+++ b/AGENTS/PITFALLS/files-and-types.md
@@ -4,8 +4,8 @@ Part of the [pitfalls index](../PITFALLS.md).
## File handling (§9.1)
-- `READ`/`WRITE`/`APPEND`/`RANDOM` are reserved keywords now — `DECLARE READ : INTEGER`
- no longer compiles.
+- `READ`/`WRITE`/`APPEND`/`RANDOM` are reserved keywords, so `DECLARE READ : INTEGER`
+ does not compile.
- `WRITEFILE f, a, b` takes exactly two operands (the stray `, b` is a parse error).
- READFILE's target must be a plain STRING variable — no CHAR, no `arr[i]`.
- The CIE guide's empty-line test `IF LineOfText = ""` compares contents.
@@ -19,7 +19,7 @@ Part of the [pitfalls index](../PITFALLS.md).
## TYPE system (§4)
-- `TYPE`/`ENDTYPE`/`SET`/`DEFINE` are reserved keywords now.
+- `TYPE`/`ENDTYPE`/`SET`/`DEFINE` are reserved keywords.
- Typing is *nominal*: two pointer types with the same pointee, or two records with
the same layout, are incompatible. Strict pointee matching rejects the official
guide's own worked example (`^INTEGER` pointed at a `Season` variable) —
diff --git a/AGENTS/PITFALLS/modules-and-stdlib.md b/AGENTS/PITFALLS/modules-and-stdlib.md
index 102e07a..4f6c446 100644
--- a/AGENTS/PITFALLS/modules-and-stdlib.md
+++ b/AGENTS/PITFALLS/modules-and-stdlib.md
@@ -8,7 +8,7 @@ Part of the [pitfalls index](../PITFALLS.md).
signatures whose definitions all specify OVERLOAD.
- Only one file may contain top-level code; top-level DECLARE is a main local, not
an export.
- - Definitions-only builds now fail without FUNCTION MAIN returning INTEGER. MAIN
+ - Definitions-only builds fail without FUNCTION MAIN returning INTEGER. MAIN
cannot coexist with top-level code.
- GLOBAL accepts only the five primitive scalar types and literal initializers;
arrays, user types and computed initializers are rejected.
diff --git a/AGENTS/PITFALLS/not-implemented.md b/AGENTS/PITFALLS/not-implemented.md
index 482330d..0216fc4 100644
--- a/AGENTS/PITFALLS/not-implemented.md
+++ b/AGENTS/PITFALLS/not-implemented.md
@@ -3,16 +3,8 @@
Part of the [pitfalls index](../PITFALLS.md).
- SET types (`SET`/`DEFINE` are reserved with dedicated errors).
-- Random files (OPENFILE...FOR RANDOM/SEEK/GETRECORD/PUTRECORD — TYPE is done, so
- these are unblocked now; the RANDOM keyword is reserved and gives a dedicated parse
- error).
+- Random files (OPENFILE...FOR RANDOM/SEEK/GETRECORD/PUTRECORD; the RANDOM keyword is
+ reserved and gives a dedicated parse error).
- DATE.
- Array-typed record fields, whole-array RETURN.
- Class inheritance (INHERITS/SUPER).
-
-## Status notes
-
-- Compiler fixtures now live in `tests/` (see [TESTING.md](../TESTING.md)).
-- Nightly CI runs the compiler suites, packaged EMBEDDED smoke checks and existing
- plugin tests.
-- The initial standard conflicts and missing diagnostic locations are fixed on Linux.