* lisp/emacs-lisp/cl-macs.el (cl-symbol-macrolet): Print warning for

malformed bindings form.

Fixes: debbugs:15814
This commit is contained in:
Nathan Trapuzzano 2013-11-06 23:38:00 -05:00 committed by Stefan Monnier
parent 099f5cd098
commit e6e4db3cac
2 changed files with 20 additions and 8 deletions

View file

@ -1,10 +1,14 @@
2013-11-05 Nathan Trapuzzano <nbtrap@nbtrap.com> (tiny change)
* emacs-lisp/cl-macs.el (cl-symbol-macrolet): Print warning for
malformed bindings form (bug#15814).
2013-11-07 Dmitry Gutov <dgutov@yandex.ru>
* progmodes/ruby-mode.el (ruby-smie-grammar): Lower priority of
"." compared to " @ ". This incidentally fixes some indentation
examples with "do".
(ruby-smie--implicit-semi-p): No implicit semi after "^", "and" or
"or".
(ruby-smie--implicit-semi-p): No implicit semi after "^", "and" or "or".
(ruby-smie-grammar): New tokens: "and" and "or".
(ruby-smie--args-separator-p): Fix the check for tokens at POS.
Exclude "and" and "or". Remove "do" in order to work around token

View file

@ -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.
@ -2726,7 +2734,7 @@ macro that returns its `&whole' argument."
(let* ((cl-entry (cons (nth 1 (nth 1 cl-form)) nil))
(cl--active-block-names (cons cl-entry cl--active-block-names))
(cl-body (macroexpand-all ;Performs compiler-macro expansions.
(cons 'progn (cddr cl-form))
(macroexp-progn (cddr cl-form))
macroexpand-all-environment)))
;; FIXME: To avoid re-applying macroexpand-all, we'd like to be able
;; to indicate that this return value is already fully expanded.