I tortured myself with enough m4 to unlock a legacy #SystemV #Unix bug:
The defn macro is supposed to give a user-defined macro's definition enclosed in the current quote strings. It actually gives that enclosed in only the first byte of each quote string instead, thus not properly quoted. This is never a problem unless you changequote to multi-character strings. Guess what I do.
The workaround is using ifdef instead.
Tested in Heirloom Project & Dell UNIX System V.4 Issue 2.2.