mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-05 07:01:11 -08:00
* lisp/emacs-lisp/cl-macs.el (cl-defstruct): Fix a bug
The defsubst was being created as:
(cl-defsubst name (args) ("DOC") ...)
* test/automated/cl-lib-tests.el (cl-lib-struct-constructors): Add test
This commit is contained in:
parent
e21e3b6ba9
commit
b74c8847e8
2 changed files with 8 additions and 2 deletions
|
|
@ -2730,7 +2730,7 @@ non-nil value, that slot cannot be set via `setf'.
|
|||
slots defaults)))
|
||||
(push `(cl-defsubst ,cname
|
||||
(&cl-defs (nil ,@descs) ,@args)
|
||||
,(if (stringp doc) (list doc)
|
||||
,(if (stringp doc) doc
|
||||
(format "Constructor for objects of type `%s'." name))
|
||||
,@(if (cl--safe-expr-p `(progn ,@(mapcar #'cl-second descs)))
|
||||
'((declare (side-effect-free t))))
|
||||
|
|
|
|||
|
|
@ -206,7 +206,8 @@
|
|||
|
||||
(cl-defstruct (mystruct
|
||||
(:constructor cl-lib--con-1 (&aux (abc 1)))
|
||||
(:constructor cl-lib--con-2 (&optional def)))
|
||||
(:constructor cl-lib--con-2 (&optional def) "Constructor docstring."))
|
||||
"General docstring."
|
||||
(abc 5 :readonly t) (def nil))
|
||||
(ert-deftest cl-lib-struct-accessors ()
|
||||
(let ((x (make-mystruct :abc 1 :def 2)))
|
||||
|
|
@ -220,6 +221,11 @@
|
|||
(`((cl-tag-slot) (abc 5 :readonly t)
|
||||
(def . ,(or `nil `(nil))))
|
||||
t)))))
|
||||
(ert-deftest cl-lib-struct-constructors ()
|
||||
(should (equal (documentation 'cl-lib--con-2 t)
|
||||
"Constructor docstring."))
|
||||
(should (mystruct-p (cl-lib--con-1)))
|
||||
(should (mystruct-p (cl-lib--con-2))))
|
||||
|
||||
(ert-deftest cl-lib-arglist-performance ()
|
||||
;; An `&aux' should not cause lambda's arglist to be turned into an &rest
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue