|
|
@@ -125,11 +125,16 @@ Still to do:
|
|
|
constants itself from the AST (a real change, not cleanup), then
|
|
|
dropping the grammar's value layer. Designators are entangled the
|
|
|
same way (`qn`/`NoteAddr` feed VAR-actual addresses).
|
|
|
-4. Calls (`ArgList`/`ActParam`), declarations/proc headings, imports,
|
|
|
- classes: the call/decl results are runtime values, not constants,
|
|
|
- so their emission (`CallBegin`/`CallEnd`/`CallArg`/`BeginFunc`/
|
|
|
- `FuncParam`/`EndFunc`/`Mangled`/`DeclVar`/`DeclConst`/…) can be
|
|
|
- deleted while keeping the `SymTab` checks.
|
|
|
+4. **Calls, declarations, proc headings, imports, classes: BLOCKED
|
|
|
+ too, by fused validation.** The `QbeGen` emit functions double as
|
|
|
+ semantic checks and the grammar depends on their result:
|
|
|
+ `QbeGen.CallArg` (`IF NOT … THEN SemError(233)`), `AddrOfVal`
|
|
|
+ (VAR-actual address + 233), `FuncParam` (`IF NOT …` on a heading).
|
|
|
+ Removing the calls would remove error detection, so this needs the
|
|
|
+ checks reimplemented in `SymTab`/the grammar first — again a real
|
|
|
+ change, not cleanup. Only the genuinely pure emitters
|
|
|
+ (`Jmp`/`EmitLabel`/`NewLabel`/`SetBit`/`NewHeap`/`DeclVar`/… when
|
|
|
+ not used as a check) can be dropped.
|
|
|
5. Retire the `-lower` test flag and the now-degenerate byte-compare
|
|
|
tests in `run_tests.sh`.
|
|
|
6. Remove the dead scaffolding: `LowerSession`, `MaterializeGlobals`,
|