ekp/.phrase/phases/phase-kp-overhaul-20260726/issue_emacs31_strict_compile_20260901.md

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-let forms in production; strict changed-tool compilation also finds three such forms in tests/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)