From 3843a58d0ebcaea9e6c9446ca6b6f52611c8097d Mon Sep 17 00:00:00 2001 From: Nathan Trapuzzano Date: Tue, 5 Nov 2013 14:36:32 -0500 Subject: [PATCH] Print warning for malformed bindings in cl-symbol-macrolet. --- lisp/ChangeLog | 5 +++++ lisp/emacs-lisp/cl-macs.el | 18 +++++++++++++----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 828fcda..824e73c 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2013-11-05 Nathan Trapuzzano + + * emacs-lisp/cl-macs.el (cl-symbol-macrolet): Print warning for + malformed bindings form. + 2013-11-05 Eli Zaretskii * international/quail.el (quail-help): Be more explicit about the diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el index 60fdc09..9cdde5e 100644 --- a/lisp/emacs-lisp/cl-macs.el +++ b/lisp/emacs-lisp/cl-macs.el @@ -1992,11 +1992,19 @@ by EXPANSION, and (setq NAME ...) will act like (setf EXPANSION ...). (unwind-protect (progn (fset 'macroexpand #'cl--sm-macroexpand) - ;; FIXME: For N bindings, this will traverse `body' N times! - (macroexpand-all (cons 'progn body) - (cons (list (symbol-name (caar bindings)) - (cl-cadar bindings)) - macroexpand-all-environment))) + (let ((expansion + ;; FIXME: For N bindings, this will traverse `body' + ;; N times! + (macroexpand-all (cons 'progn body) + (cons (list (symbol-name (caar bindings)) + (cl-cadar bindings)) + macroexpand-all-environment)))) + (if (or (null (cdar bindings)) (cl-cddar bindings)) + (macroexp--warn-and-return + (format "Malformed `cl-symbol-macrolet' binding: %S" + (car bindings)) + expansion) + expansion))) (fset 'macroexpand previous-macroexpand)))))) ;;; Multiple values. -- 1.8.4.2