summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/cl-print.el
diff options
context:
space:
mode:
authorLars Brinkhoff <lars@nocrew.org>2017-03-14 13:52:40 +0100
committerLars Brinkhoff <lars@nocrew.org>2017-04-04 08:23:46 +0200
commit056548283884d61b1b9637c3e56855ce3a17274d (patch)
tree80f208b179e4f075dbf4388cea65c98572bd792e /lisp/emacs-lisp/cl-print.el
parenta2c33430292c79ac520100b1d0e8e7c04dfe426a (diff)
downloademacs-056548283884d61b1b9637c3e56855ce3a17274d.tar.gz
emacs-056548283884d61b1b9637c3e56855ce3a17274d.tar.bz2
emacs-056548283884d61b1b9637c3e56855ce3a17274d.zip
Make cl-defstruct use records.
* lisp/emacs-lisp/cl-extra.el (cl--describe-class) (cl--describe-class-slots): Use the new `type-of'. * lisp/emacs-lisp/cl-generic.el (cl--generic-struct-tag): Use type-of. (cl--generic-struct-specializers): Adjust to new tag. * lisp/emacs-lisp/cl-macs.el (cl-defstruct): When type is nil, use records. Use the type symbol as the tag. Use copy-record to copy structs. (cl--defstruct-predicate): New function. (cl--pcase-mutually-exclusive-p): Use it. (cl-struct-sequence-type): Can now return `record'. * lisp/emacs-lisp/cl-preloaded.el (cl--make-slot-desc): Adjust ad-hoc code to new format. (cl--struct-register-child): Work with records. (cl-struct-define): Don't touch the tag's symbol-value and symbol-function slots when we use the type as tag. * lisp/emacs-lisp/cl-print.el (cl-print-object): Adjust to new tag. * test/lisp/emacs-lisp/cl-lib-tests.el (cl-lib-defstruct-record): New test. * doc/lispref/records.texi, doc/misc/cl.texi: Update for records.
Diffstat (limited to 'lisp/emacs-lisp/cl-print.el')
-rw-r--r--lisp/emacs-lisp/cl-print.el2
1 files changed, 1 insertions, 1 deletions
diff --git a/lisp/emacs-lisp/cl-print.el b/lisp/emacs-lisp/cl-print.el
index 8a8d4a4c1af..65c86d2b65e 100644
--- a/lisp/emacs-lisp/cl-print.el
+++ b/lisp/emacs-lisp/cl-print.el
@@ -137,7 +137,7 @@ call other entry points instead, such as `cl-prin1'."
(cl-defmethod cl-print-object ((object cl-structure-object) stream)
(princ "#s(" stream)
- (let* ((class (symbol-value (aref object 0)))
+ (let* ((class (cl-find-class (type-of object)))
(slots (cl--struct-class-slots class)))
(princ (cl--struct-class-name class) stream)
(dotimes (i (length slots))