diff options
| author | Cliff Click <cliffc@acm.org> | 2026-10-17 09:00:10 -0700 |
|---|---|---|
| committer | Cliff Click <cliffc@acm.org> | 2026-10-17 09:00:10 -0700 |
| commit | 9b9fadcfa74b087a695156573ea28b89a166b18b (patch) | |
| tree | a4dc1585359ab2bd254f8bad2bdcf85a21263ccb /skills | |
| parent | 0e94cdc0c481e9312d1b5033b3597c7c262ff878 (diff) | |
| download | Simple-9b9fadcfa74b087a695156573ea28b89a166b18b.tar.gz Simple-9b9fadcfa74b087a695156573ea28b89a166b18b.zip | |
Class cycles init checks
Diffstat (limited to 'skills')
| -rw-r--r-- | skills/chapter25-codex-notes.md | 15 |
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 |
