Refresh the coverage numbers and document the new verbs
94.6% line, 98.6% function, measured from a coverage tree outside the source directory. The akgl targets are not in that figure and the entry now says so, because a reader of the table would otherwise read it as untested. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
16
README.md
16
README.md
@@ -135,19 +135,31 @@ The following commands/verbs are implemented:
|
||||
30 NEXT I#
|
||||
```
|
||||
|
||||
* `CLR`: Drop every variable and function definition, keeping the program
|
||||
* `CONT`: Resume a program stopped by `STOP`, from where it stopped. Refused if nothing stopped
|
||||
* `GOTO n`: Go to line n in the program
|
||||
* `GOSUB n`: Go to line n in the program and return here when `RETURN` is found
|
||||
* `IF (comparison) THEN (statement) [ELSE (statement)]` : Conditional branching
|
||||
* `HELP`: Re-list the line the last error happened on
|
||||
* `IF (comparison) THEN (statement) [ELSE (statement)]` : Conditional branching. Everything after
|
||||
`THEN` on the line belongs to the condition, and everything after an `ELSE` belongs to the
|
||||
`ELSE` — the same scoping a C128 uses
|
||||
* `INPUT "PROMPT STRING" VARIABLE`: Read input from the user and store it in the named variable
|
||||
* `LABEL IDENTIFIER`: Place a label at the current line number. Labels are constant integer identifiers that can be used in expressions like variables (including GOTO) but which cannot be assigned to. Labels do not have a type suffix (`$`, `#` or `%`).
|
||||
* `LIST [n-n]`: List all or a portion of the lines in the current program, with the same range forms as `DELETE`
|
||||
* `NEW`: Erase the program *and* every variable, and take the line counter home
|
||||
* `POKE ADDRESS, VALUE`: Poke the single byte VALUE into the ADDRESS
|
||||
* `PRINT (expression)`
|
||||
* `QUIT` : Exit the interpreter
|
||||
* `READ IDENTIFIER[, ...]` : Fill the named variables with data from a subsequent DATA statement
|
||||
* `RETURN` : return from `GOSUB` to the point where it was called
|
||||
* `RUN [n]`: Run the program currently in memory, optionally starting at line `n`
|
||||
* `STOP`: Stop program execution at the current point
|
||||
* `STOP`: Stop program execution at the current point. `CONT` resumes from there
|
||||
* `SWAP A, B`: Exchange two variables of the same type, arrays and their dimensions included
|
||||
* `TRON` / `TROFF`: Turn line tracing on and off. A traced program prints `[10][20]` inline
|
||||
ahead of each line, as a C128 does
|
||||
|
||||
Statements are separated by colons, so a line can hold several: `10 A# = 1 : PRINT A#`. An empty
|
||||
statement is legal, so a trailing colon and a run of them are both fine.
|
||||
|
||||
## Functions
|
||||
|
||||
|
||||
7
TODO.md
7
TODO.md
@@ -1039,8 +1039,8 @@ entire test corpus and passes clean under ASan and UBSan.
|
||||
| `ctest` with `-DAKBASIC_WITH_AKGL=ON` | 75/75 — the same, minus the three `no_device` cases the SDL driver contradicts, plus `akgl_backends` and `akgl_frontend`; the `akgl_build` CI job |
|
||||
| Golden corpus | 41/41 byte-exact, driven in place from the submodule — **and 41/41 again through the SDL binary**, which is most of what proves the frontend changes no output |
|
||||
| ASan + UBSan | 76/76 |
|
||||
| Line coverage | 93.6% (3618/3867) — above the 90% gate |
|
||||
| Function coverage | 97.8% (267/273) |
|
||||
| Line coverage | 94.6% (3857/4076) — above the 90% gate |
|
||||
| Function coverage | 98.6% (287/291) |
|
||||
| Warnings | none under `-Wall -Wextra` |
|
||||
| `doxygen Doxyfile` | clean |
|
||||
| Mutation (`src/symtab.c`) | 74.1%, against a gate of 65 — see `.gitea/workflows/ci.yaml` |
|
||||
@@ -1053,7 +1053,8 @@ figure — it is not built in a default configuration.
|
||||
**A note on reading that number, because it was misread once while producing it.** A stale
|
||||
`build-cov/` left in the source directory from an earlier session was silently folded into the
|
||||
report by `gcovr --root .`, which produced the *previous* run's 92.3% for a tree that had grown
|
||||
by 800 lines. That is `libakgl` defect #13 happening here rather than there, and `build*/` being
|
||||
by 800 lines. The number above was produced from a coverage tree outside the source directory
|
||||
entirely, after a `find . -name '*.gcda'` came back empty. That is `libakgl` defect #13 happening here rather than there, and `build*/` being
|
||||
gitignored is exactly what makes it invisible. **Keep build trees out of the source directory**,
|
||||
and if a coverage number looks suspiciously unchanged, `find . -name '*.gcda'` before believing
|
||||
it.
|
||||
|
||||
Reference in New Issue
Block a user