From: Stefan Monnier Date: Thu, 8 Nov 2012 14:54:03 +0000 (-0500) Subject: * lisp/emacs-lisp/gv.el (gv-deref): Move setter declaration, to fix bootstrap. X-Git-Tag: emacs-24.3.90~173^2~18^2~171 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=a9a5c7f69099233a10d54b1c0e2792fdd88454b9;p=emacs.git * lisp/emacs-lisp/gv.el (gv-deref): Move setter declaration, to fix bootstrap. --- 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.