refactor: rebuild the milestone registry as a table
registry.py was literally `cat registry_m1_m3.py registry_m4_m6.py`, which left a duplicate `_c` definition and a stray module-level docstring at the seam. Replace the hand-rolled append loops with five builders -- _emit, _wcl, _triple, _rejects, _dump_ast -- and express the cases as one ordered list. The irregularities are now parameters instead of one-off code, each with the reason recorded: - _triple(stem=) for M2 castwhil emitting CAST16 - _triple(build_source=) for M4 prop, which emits PROP.C but compiles PROPTEST.C because that file #includes it - _triple(run_suffix="trap", run_ok=False) for the M3 bounds cases - _triple(emit_suffix=None) for M4, whose ids lack the -emit suffix - _emit(output_first=True) for M6, which passes -o before the input The three scattered 8.3 output-name mappings collapse into one _OUT83 table keyed by (milestone, name). The key needs both: bad-type is BAD-TY in M2 but BAD-TYP in M4, and bad-cond is BAD-CO in M2 but unshortened in M5. Values are carried over verbatim -- the shortenings are inconsistent and several were never required, but that is a separate decision. suite.py keeps only Case and drops the all_cases forwarder, so the registry -> suite -> registry cycle is gone along with the function-scoped import that worked around it. dosboxx.py still imports Case from suite and is untouched. Verified behaviour-preserving by snapshotting (id, milestone, command, expect_success) for all 150 cases in order before and after: diff is empty. pytest collects the same 151 items. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BScg8CF1sAAM2zVHAu5zvW
This commit is contained in:
@@ -6,7 +6,8 @@ import warnings
|
||||
import pytest
|
||||
|
||||
from ferrolang_vm.dosboxx import SuiteRun, run_suite
|
||||
from ferrolang_vm.suite import Case, all_cases
|
||||
from ferrolang_vm.registry import all_cases
|
||||
from ferrolang_vm.suite import Case
|
||||
|
||||
|
||||
def _number(name: str) -> int:
|
||||
|
||||
Reference in New Issue
Block a user