Files
mattgodbolt-molty 3a7e43de71 Tighten PR per second review pass + add drift-detection tests
Parsimony:
- lib/instructionsets.ts: drop subset-redundant table entries
  (powerpc dropped `'ppc64'` since `'ppc'` covers it; sparc dropped
  `'sparc64'` since `'sparc'` covers it). Replace `as const satisfies
  …` + runtime cast with a direct `Partial<Record<…>>` annotation.
- lib/instructionsets.ts: add `armv8`/`armv9` to the aarch64 substring
  list — caught by the new consistency test below; without these,
  `-march=armv8.8-a+sve2` was matching the bare `'arm'` substring and
  resolving to arm32. Documented inline.
- lib/properties-validator.ts: `expandCompilersList` now reuses
  `parseCompilersList` instead of re-implementing colon-splitting.
- etc/config/*.amazon.properties (11 files): drop the
  "added when removing the inference heuristic" banner — that is
  git-history information, not what a future editor needs.
- test/instructionsets-tests.ts: drop the redundant bare `-march=`
  case (substring matching makes it equivalent to the triple test).

New drift-detection tests:
- test/properties-validation-tests.ts gains an
  `instructionSet matches any -target/-march in default options`
  test that walks every compiler's resolved options and flags any
  case where the parsed target/arch resolves to a different
  InstructionSet than the compiler's declared one. Catches the case
  where someone bumps a clang-target group's `-target` flag without
  updating its `instructionSet`. Already caught a real mistag —
  the swift `arm-swift` group had `-target aarch64-...` but
  inherited amd64; tagged explicitly.
- New synthetic-input tests for `findCompilersWithoutInstructionSet`
  cover happy path, empty-string-as-missing, and nested `&group`
  inheritance. Previous tests only ran against real config; if the
  resolution logic regressed the real-config test would still pass.
- New unit tests for `extractTargetTokens`.

Refactor: `findCompilersWithoutInstructionSet` now uses a new
`enumerateCompilers` generator that exposes a `resolve(property)`
callback, so the consistency test can reuse the same inheritance walk.

Docs: `docs/Configuration.md` and `docs/AddingACompiler.md` mark
`instructionSet` as required and point at `npm run test:props`.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 18:18:58 -05:00
..
2025-07-28 10:34:46 -05:00
2025-07-28 10:34:46 -05:00