aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorStefan Monnier2017-03-24 09:21:52 -0400
committerLars Brinkhoff2017-03-30 18:31:27 +0200
commit390612eb7ab8ccf0792fda7c48b7056c5cda9b06 (patch)
tree71766520a963d9c970cd72e8a2022302661a9f94 /doc
parent43cb754a3109ac9afaeab1f08e35673b078a7a09 (diff)
downloademacs-scratch/record.tar.gz
emacs-scratch/record.zip
Backward compatibility with pre-existing struct instances.scratch/record
* lisp/emacs-lisp/cl-lib.el (cl--old-struct-type-of): New function. (cl-old-struct-compat-mode): New minor mode. * lisp/emacs-lisp/cl-macs.el (cl-defstruct): Pass `record' to cl-struct-define to signal use of record objects. * lisp/emacs-lisp/cl-preloaded.el (cl--struct-get-class, cl-struct-define): Enable legacy defstruct compatibility. * test/lisp/emacs-lisp/cl-lib-tests.el (cl-lib-old-struct, old-struct): New tests. * doc/lispref/elisp.texi, doc/lispref/records.texi: Document `old-struct-compat'.
Diffstat (limited to 'doc')
-rw-r--r--doc/lispref/elisp.texi1
-rw-r--r--doc/lispref/records.texi17
2 files changed, 17 insertions, 1 deletions
diff --git a/doc/lispref/elisp.texi b/doc/lispref/elisp.texi
index 0f7efb6f187..3a348aae98e 100644
--- a/doc/lispref/elisp.texi
+++ b/doc/lispref/elisp.texi
@@ -423,6 +423,7 @@ Sequences, Arrays, and Vectors
423Records 423Records
424 424
425* Record Functions:: Functions for records. 425* Record Functions:: Functions for records.
426* Backward Compatibility:: Compatibility for cl-defstruct.
426 427
427Hash Tables 428Hash Tables
428 429
diff --git a/doc/lispref/records.texi b/doc/lispref/records.texi
index 822fd2bf36e..9a5d900cfc9 100644
--- a/doc/lispref/records.texi
+++ b/doc/lispref/records.texi
@@ -26,7 +26,8 @@ evaluating it is the same record. This does not evaluate or even
26examine the slots. @xref{Self-Evaluating Forms}. 26examine the slots. @xref{Self-Evaluating Forms}.
27 27
28@menu 28@menu
29* Record Functions:: Functions for records. 29* Record Functions:: Functions for records.
30* Backward Compatibility:: Compatibility for cl-defstruct.
30@end menu 31@end menu
31 32
32@node Record Functions 33@node Record Functions
@@ -98,3 +99,17 @@ the copied record, are also visible in the original record.
98@end group 99@end group
99@end example 100@end example
100@end defun 101@end defun
102
103@node Backward Compatibility
104@section Backward Compatibility
105
106 Code compiled with older versions of @code{cl-defstruct} that
107doesn't use records may run into problems when used in a new Emacs.
108To alleviate this, Emacs detects when an old @code{cl-defstruct} is
109used, and enables a mode in which @code{type-of} handles old struct
110objects as if they were records.
111
112@defun cl-old-struct-compat-mode arg
113If @var{arg} is positive, enable backward compatibility with old-style
114structs.
115@end defun