Przeglądaj źródła

docs: composite function results landed (and methods now keep their local decls)

Eric Streit 4 dni temu
rodzic
commit
bf05e4a99e
3 zmienionych plików z 12 dodań i 7 usunięć
  1. 4 1
      docs/STATUS.md
  2. 5 4
      docs/analysis_gaps.md
  3. 3 2
      docs/features.md

+ 4 - 1
docs/STATUS.md

@@ -23,7 +23,10 @@ test and every session.  Since then:
 - `-lower` and the now-degenerate byte-compare tests were retired;
 - `-lower` and the now-degenerate byte-compare tests were retired;
 - the **array-of-record inline length-word** bug was fixed (inline
 - the **array-of-record inline length-word** bug was fixed (inline
   expansion for small arrays, a generated run-time init for large ones);
   expansion for small arrays, a generated run-time init for large ones);
-- **statement-context result suffixes** (`F()^.x := e`) were added.
+- **statement-context result suffixes** (`F()^.x := e`) were added;
+- **composite function results** (record/array/set, via sret) were added,
+  which also required storing a method's block declarations (fixing
+  methods with local variables).
 
 
 ## TL;DR
 ## TL;DR
 
 

+ 5 - 4
docs/analysis_gaps.md

@@ -115,10 +115,11 @@ assignment (flat blit), nested-`MODULE` lowering, `ADDRESS`↔pointer
 assignment.
 assignment.
 
 
 Remaining after today: `GOTO`/labels, generics, multiple inheritance
 Remaining after today: `GOTO`/labels, generics, multiple inheritance
-(deliberate), chained post-call calls (`F().M()`, which needs a function
-to return a record/class — still `230`), and the channel/device library
-holes in §2.  (Statement-context result suffixes, `F()^.x := e`, landed
-2026-10-08.)
+(deliberate), chained post-call calls (`F().M()` — composite results now
+work, so this needs only a call-after-call-result grammar addition plus
+class results), and the channel/device library holes in §2.
+(Statement-context result suffixes, `F()^.x := e`, landed 2026-10-08;
+composite function results — record/array/set — landed 2026-10-08.)
 
 
 ## 7. Done after the gap analysis (this session)
 ## 7. Done after the gap analysis (this session)
 
 

+ 3 - 2
docs/features.md

@@ -107,8 +107,9 @@ Legend: ✅ done · 🔄 partial · ⏸ not started / deferred.
 - ✅ Separate compilation: `lib.def lib.mod prog.mod` → one image;
 - ✅ Separate compilation: `lib.def lib.mod prog.mod` → one image;
   module init functions; opaque completion; strict 235 signature
   module init functions; opaque completion; strict 235 signature
   checks between a definition and its implementation.
   checks between a definition and its implementation.
-- ✅ Procedure-type variables / indirect calls (`t_proctype`); ⏸
-  per-file object emission, import cycles.
+- ✅ Procedure-type variables / indirect calls (`t_proctype`); ✅
+  composite function results (record/array/set, sret); ⏸ per-file
+  object emission, import cycles.
 
 
 ## Backend (QBE)
 ## Backend (QBE)
 - ✅ Length-prefixed arrays (count + elements), deep record copy,
 - ✅ Length-prefixed arrays (count + elements), deep record copy,