GNU bug report logs - #29345
27.0.50; Error message for cl-destructuring-bind could be improved

Previous Next

Package: emacs;

Reported by: Philipp Stephani <p.stephani2 <at> gmail.com>

Date: Fri, 17 Nov 2017 20:31:02 UTC

Severity: minor

Tags: fixed

Found in version 27.0.50

Fixed in version 27.1

Done: Lars Ingebrigtsen <larsi <at> gnus.org>

Bug is archived. No further changes may be made.

Full log


Message #8 received at 29345 <at> debbugs.gnu.org (full text, mbox):

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: Philipp Stephani <p.stephani2 <at> gmail.com>
Cc: 29345 <at> debbugs.gnu.org
Subject: Re: bug#29345: 27.0.50; Error message for cl-destructuring-bind
 could be improved
Date: Sun, 14 Jul 2019 21:41:59 +0200
Philipp Stephani <p.stephani2 <at> gmail.com> writes:

> $ emacs -Q -batch -l cl-lib -eval '(cl-destructuring-bind (a b) (list 1))'
> Wrong number of arguments: nil, 1
>
> It would be nice if the first error data item weren't nil, but
> e.g. `(cl-destructuring-bind (a b))` so that the error is obvious.

What about

Wrong number of arguments: (a b), 1

The following patch achieves that, but since it was explicitly 'cl-none
before (which is the magic value that gives you nil in that error
message), I'm not sure whether this has any negative effects?  Probably
not, because there's this:

(defvar cl--bind-block) ;Name of surrounding block, only use for `signal' data.

Any opinions?

diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index 4347b4b71b..8b9224bd1b 100644
--- a/lisp/emacs-lisp/cl-macs.el
+++ b/lisp/emacs-lisp/cl-macs.el
@@ -695,8 +695,11 @@ cl-destructuring-bind
   "Bind the variables in ARGS to the result of EXPR and execute BODY."
   (declare (indent 2)
            (debug (&define cl-macro-list1 def-form cl-declarations def-body)))
-  (let* ((cl--bind-lets nil) (cl--bind-forms nil)
-	 (cl--bind-defs nil) (cl--bind-block 'cl-none) (cl--bind-enquote nil))
+  (let* ((cl--bind-lets nil)
+         (cl--bind-forms nil)
+	 (cl--bind-defs nil)
+         (cl--bind-block args)
+         (cl--bind-enquote nil))
     (cl--do-arglist (or args '(&aux)) expr)
     (macroexp-let* (nreverse cl--bind-lets)
                    (macroexp-progn (append (nreverse cl--bind-forms) body)))))


-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




This bug report was last modified 5 years and 294 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.