`cl-symbol-macrolet' silently accepts both of the following forms: (cl-symbol-macrolet ((foo bar baz) ...) ...) (cl-symbol-macrolet ((foo) ...) ...) In the former case, baz is ignored; in the latter case, foo is bound to nil. According to the CL docs, neither of these is valid. (Not to mention, they are both errors in Common Lisp.) The attached patch asserts properly formed bindings. I checked the Emacs source to make sure there's no code in there relying on this behavior.