[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] emacs-25 e4ac450: Define struct predicate before acccesors
From: |
Noam Postavsky |
Subject: |
[Emacs-diffs] emacs-25 e4ac450: Define struct predicate before acccesors |
Date: |
Sat, 10 Dec 2016 21:03:27 +0000 (UTC) |
branch: emacs-25
commit e4ac4507968b839569b5ce12a9c4d0374dd46768
Author: Noam Postavsky <address@hidden>
Commit: Noam Postavsky <address@hidden>
Define struct predicate before acccesors
The accessor functions use the predicate function, which causes problems
when reloading after unload-feature: the compiler-macro property is
still present on the predicate symbol, and the compiler fails to find
the definition when trying to inline it into the accessor
function (Bug#25088).
* lisp/emacs-lisp/cl-macs.el (cl-defstruct): Move predicate definition
before field accessor definitions.
---
lisp/emacs-lisp/cl-macs.el | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index c51ed9d..b3a60b1 100644
--- a/lisp/emacs-lisp/cl-macs.el
+++ b/lisp/emacs-lisp/cl-macs.el
@@ -2687,6 +2687,14 @@ non-nil value, that slot cannot be set via `setf'.
(= safety 1))
(cons 'and (cl-cdddr pred-form))
`(,predicate cl-x))))
+ (when pred-form
+ (push `(cl-defsubst ,predicate (cl-x)
+ (declare (side-effect-free error-free))
+ ,(if (eq (car pred-form) 'and)
+ (append pred-form '(t))
+ `(and ,pred-form t)))
+ forms)
+ (push `(put ',name 'cl-deftype-satisfies ',predicate) forms))
(let ((pos 0) (descp descs))
(while descp
(let* ((desc (pop descp))
@@ -2741,14 +2749,6 @@ non-nil value, that slot cannot be set via `setf'.
(setq pos (1+ pos))))
(setq slots (nreverse slots)
defaults (nreverse defaults))
- (when pred-form
- (push `(cl-defsubst ,predicate (cl-x)
- (declare (side-effect-free error-free))
- ,(if (eq (car pred-form) 'and)
- (append pred-form '(t))
- `(and ,pred-form t)))
- forms)
- (push `(put ',name 'cl-deftype-satisfies ',predicate) forms))
(and copier
(push `(defalias ',copier #'copy-sequence) forms))
(if constructor
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] emacs-25 e4ac450: Define struct predicate before acccesors,
Noam Postavsky <=