diff options
| author | _ov4 <ov4@ov4.org> | 2026-10-21 12:49:21 +0000 |
|---|---|---|
| committer | _ov4 <ov4@ov4.org> | 2026-10-21 12:49:21 +0000 |
| commit | 97f743a41925e4346aa2c08f23ba432072318eca (patch) | |
| tree | 736d18437bc92dadf9e736aafe68307bdee63ae4 /AGENTS | |
| parent | 410dd10ffd3270e6f7972f1c9aeb07fb7812fee5 (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.md | 15 | ||||
| -rw-r--r-- | AGENTS/PITFALLS/exceptions-and-c-interop.md | 8 | ||||
| -rw-r--r-- | AGENTS/PITFALLS/files-and-types.md | 6 | ||||
| -rw-r--r-- | AGENTS/PITFALLS/modules-and-stdlib.md | 2 | ||||
| -rw-r--r-- | AGENTS/PITFALLS/not-implemented.md | 12 |
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. |
