summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/gv.el
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2012-11-08 09:54:03 -0500
committerStefan Monnier <monnier@iro.umontreal.ca>2012-11-08 09:54:03 -0500
commita9a5c7f69099233a10d54b1c0e2792fdd88454b9 (patch)
tree33cced4b9dcb1c5f63a957757ade788098af8a22 /lisp/emacs-lisp/gv.el
parent784c1a7b3aae2f43894ba711ae6dd77aa8bb96c7 (diff)
downloademacs-a9a5c7f69099233a10d54b1c0e2792fdd88454b9.tar.gz
* lisp/emacs-lisp/gv.el (gv-deref): Move setter declaration, to fix bootstrap.
Diffstat (limited to 'lisp/emacs-lisp/gv.el')
-rw-r--r--lisp/emacs-lisp/gv.el5
1 files changed, 4 insertions, 1 deletions
diff --git a/lisp/emacs-lisp/gv.el b/lisp/emacs-lisp/gv.el
index 72c2ec60734..456bace5b1b 100644
--- a/lisp/emacs-lisp/gv.el
+++ b/lisp/emacs-lisp/gv.el
@@ -447,8 +447,11 @@ This is like the `&' operator of the C language."
"Dereference REF, returning the referenced value.
This is like the `*' operator of the C language.
REF must have been previously obtained with `gv-ref'."
- (declare (gv-setter (lambda (v) `(funcall (cdr ,ref) ,v))))
(funcall (car ref)))
+;; Don't use `declare' because it seems to introduce circularity problems:
+;; Warning: Eager macro-expansion skipped due to cycle:
+;; … => (load "gv.el") => (macroexpand-all (defsubst gv-deref …)) => (macroexpand (defun …)) => (load "gv.el")
+(gv-define-setter gv-deref (v ref) `(funcall (cdr ,ref) ,v))
;;; Vaguely related definitions that should be moved elsewhere.