1.6 KiB
issue029 — Emacs 31.1 strict compilation rejects obsolete let macros
Status: resolved
Environment
- GNU Emacs 31.1 development build
fac653279dcb - macOS Apple Silicon
- EKP HEAD
97cb6a6e3506
Reproduction
Run the repository CI byte-compilation command with
byte-compile-error-on-warn set to t against the four production files.
Expected vs actual
- Expected: production and maintained test tools compile with warnings treated as errors on the recorded Emacs executable.
- Actual: Emacs 31.1 rejects six single-binding
if-let/when-letforms in production; strict changed-tool compilation also finds three such forms intests/ekp-live-commit-evaluator.el.
Investigation and fix
The macros became obsolete in Emacs 31.1. Every affected form has exactly one binding, so the starred replacement has identical binding, truth, body, and fallback behavior and needs no compatibility branch. Replace only those nine macro names; do not alter layout or evaluator data flow.
Verification
task044 passed root integration compilation; WERROR production and changed
evaluator compilation; normal and seed-20260901 random ERT 296/296; warning-clean
C build; 300-case C/Elisp parity fuzz; release invariants; local 49-entry
dictionary manifest/hash; checkdoc; and diff-check. The network-backed
fixed-upstream dictionary fetch was stopped and excluded at the user's explicit
direction; no upstream-provenance claim is made.
Resolved At: 2026-09-01
Resolved By: C1a nine-repository verification
Commit: pending (protected pre-existing dirty worktree)