diff options
author | Stefan Monnier <monnier@IRO.UMontreal.CA> | 2017-07-14 00:32:34 -0400 |
---|---|---|
committer | Noam Postavsky <npostavs@gmail.com> | 2017-08-07 18:54:49 -0400 |
commit | cc30d77ecdd1b9155ade3d0656a84a0839ee2795 (patch) | |
tree | a0b0c1180b8152284d10420d4189eb7cebdbc7d7 /test/lisp/emacs-lisp | |
parent | 00f7e31110a27e568529192d7441d9631b9096bc (diff) | |
download | emacs-cc30d77ecdd1b9155ade3d0656a84a0839ee2795.tar.gz emacs-cc30d77ecdd1b9155ade3d0656a84a0839ee2795.tar.bz2 emacs-cc30d77ecdd1b9155ade3d0656a84a0839ee2795.zip |
Let `define-symbol-prop' take effect during compilation
* src/fns.c (syms_of_fns): New variable `overriding-plist-environment'.
(Fget): Consult it.
* lisp/emacs-lisp/bytecomp.el (byte-compile-close-variables): Let-bind
it to nil.
(byte-compile-define-symbol-prop): New function, handles compilation
of top-level `define-symbol-prop' and `function-put' calls by putting
the symbol setting into `overriding-plist-environment'.
Co-authored-by: Noam Postavsky <npostavs@gmail.com>
Diffstat (limited to 'test/lisp/emacs-lisp')
-rw-r--r-- | test/lisp/emacs-lisp/bytecomp-tests.el | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/test/lisp/emacs-lisp/bytecomp-tests.el b/test/lisp/emacs-lisp/bytecomp-tests.el index d15bd8b6e65..8ef2ce70251 100644 --- a/test/lisp/emacs-lisp/bytecomp-tests.el +++ b/test/lisp/emacs-lisp/bytecomp-tests.el @@ -545,6 +545,23 @@ literals (Bug#20852)." This functionality has been obsolete for more than 10 years already and will be removed soon. See (elisp)Backquote in the manual."))))))) + +(ert-deftest bytecomp-tests-function-put () + "Check `function-put' operates during compilation." + (should (boundp 'lread--old-style-backquotes)) + (bytecomp-tests--with-temp-file source + (dolist (form '((function-put 'bytecomp-tests--foo 'foo 1) + (function-put 'bytecomp-tests--foo 'bar 2) + (defmacro bytecomp-tests--foobar () + `(cons ,(function-get 'bytecomp-tests--foo 'foo) + ,(function-get 'bytecomp-tests--foo 'bar))) + (defvar bytecomp-tests--foobar 1) + (setq bytecomp-tests--foobar (bytecomp-tests--foobar)))) + (print form (current-buffer))) + (write-region (point-min) (point-max) source nil 'silent) + (byte-compile-file source t) + (should (equal bytecomp-tests--foobar (cons 1 2))))) + ;; Local Variables: ;; no-byte-compile: t ;; End: |