]> git.eshelyaron.com Git - emacs.git/commitdiff
(cl-defsubst): Ignore false-positive occurrences of args via &cl-defs
authorStefan Monnier <monnier@iro.umontreal.ca>
Fri, 20 Mar 2015 20:29:21 +0000 (16:29 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Fri, 20 Mar 2015 20:29:21 +0000 (16:29 -0400)
Fixes: debbugs:20149
* lisp/emacs-lisp/cl-macs.el (cl-defsubst): Ignore false-positive
occurrences of args via &cl-defs.

lisp/ChangeLog
lisp/emacs-lisp/cl-macs.el

index cecec469ed8f4e5202429d4e579d09ffcc81776d..ee4e021b9406fe5e95edadf7d7465789467bf48a 100644 (file)
@@ -1,3 +1,8 @@
+2015-03-20  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/cl-macs.el (cl-defsubst): Ignore false-positive
+       occurrences of args via &cl-defs (bug#20149).
+
 2015-03-20  Alan Mackenzie  <acm@muc.de>
 
        Fix debbugs#20146
index d386678344796c937fa653c97aa1079edbc8517d..75c6a5687c4c0a0e7064d7ed650f1c1346aa6f0f 100644 (file)
@@ -2446,10 +2446,11 @@ The function's arguments should be treated as immutable.
 \(fn NAME ARGLIST [DOCSTRING] BODY...)"
   (declare (debug cl-defun) (indent 2))
   (let* ((argns (cl--arglist-args args))
+        (real-args (if (eq '&cl-defs (car args)) (cddr args) args))
          (p argns)
          ;; (pbody (cons 'progn body))
          )
-    (while (and p (eq (cl--expr-contains args (car p)) 1)) (pop p))
+    (while (and p (eq (cl--expr-contains real-args (car p)) 1)) (pop p))
     `(progn
        ,(if p nil   ; give up if defaults refer to earlier args
           `(cl-define-compiler-macro ,name