summaryrefslogtreecommitdiff
path: root/skills/chapter25-codex-notes.md
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2026-10-17 09:00:10 -0700
committerCliff Click <cliffc@acm.org>2026-10-17 09:00:10 -0700
commit9b9fadcfa74b087a695156573ea28b89a166b18b (patch)
treea4dc1585359ab2bd254f8bad2bdcf85a21263ccb /skills/chapter25-codex-notes.md
parent0e94cdc0c481e9312d1b5033b3597c7c262ff878 (diff)
downloadSimple-9b9fadcfa74b087a695156573ea28b89a166b18b.tar.gz
Simple-9b9fadcfa74b087a695156573ea28b89a166b18b.zip
Class cycles init checks
Diffstat (limited to 'skills/chapter25-codex-notes.md')
-rw-r--r--skills/chapter25-codex-notes.md15
1 files changed, 15 insertions, 0 deletions
diff --git a/skills/chapter25-codex-notes.md b/skills/chapter25-codex-notes.md
index b9b30ab5..f76c6fd6 100644
--- a/skills/chapter25-codex-notes.md
+++ b/skills/chapter25-codex-notes.md
@@ -29,6 +29,8 @@ For shared viewer work, read [the graph viewer notes](graph-viewer-codex-notes.m
## Collaboration preferences
+- For densely keyed integer maps, use indexed `Ary<T>` storage rather than
+ `HashMap<Integer,T>`.
- Build with Make alone; Maven must never be required. Cliff prefers few tests:
avoid tests for every small viewer edit or rapidly changing display experiment.
Use focused existing tests and disposable probes when they answer a real risk.
@@ -72,6 +74,19 @@ For shared viewer work, read [the graph viewer notes](graph-viewer-codex-notes.m
## Mutability and chapter boundaries
+- Class-init cycle validation (2026-10-14): reject an SCC only when it contains
+ more than one `<clinit>`. A self-edge or helper recursion with one initializer
+ is legal, regardless of inlining. Error reports list every internal edge of
+ the first rejected SCC, including helper calls; stack order is not a path.
+- Class-cycle diagnostics use `SourceError.format(CompUnit, byteOffset, message)`.
+ Start `file:line:column: error: message` in column one for Emacs compilation
+ buffers; put the source and caret on separate following lines. With no source,
+ report the path and saved byte offset, without inventing line/column numbers.
+ Lexer snapshots keep their original CompUnit through inlining and Call/CLInit
+ serialization; recover representative sites by rescanning only on rejection.
+ Source text is assumed available. Imported source paths are diagnostic data,
+ not `_smp` rebuild/discovery state. General error-message migration is deferred.
+
- Constructors start in 16, independent binding/access permissions in 17a,
syntax sugar and inference in 17b. Historical Chapter 17 references mean 17b.
- `!Point` is writable access, `~Point` deep read-only access; `!p` allows