mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-03 08:30:09 +00:00
* lisp/emacs-lisp/bytecomp.el (byte-compile): Don't signal an error if the
function is already compiled.
This commit is contained in:
parent
ee28be33a5
commit
b5771c0d82
@ -1,5 +1,8 @@
|
||||
2012-07-04 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* emacs-lisp/bytecomp.el (byte-compile): Don't signal an error if the
|
||||
function is already compiled.
|
||||
|
||||
* xml.el (xml-name-regexp): Remove, redundant. Use xml-name-re.
|
||||
|
||||
2012-07-03 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
@ -2485,22 +2485,32 @@ If FORM is a lambda or a macro, byte-compile it as a function."
|
||||
(macro (eq (car-safe fun) 'macro)))
|
||||
(if macro
|
||||
(setq fun (cdr fun)))
|
||||
(when (symbolp form)
|
||||
(unless (memq (car-safe fun) '(closure lambda))
|
||||
(cond
|
||||
;; Up until Emacs-24.1, byte-compile silently did nothing when asked to
|
||||
;; compile something invalid. So let's tune down the complaint from an
|
||||
;; error to a simple message for the known case where signaling an error
|
||||
;; causes problems.
|
||||
((byte-code-function-p fun)
|
||||
(message "Function %s is already compiled"
|
||||
(if (symbolp form) form "provided"))
|
||||
fun)
|
||||
(t
|
||||
(when (symbolp form)
|
||||
(unless (memq (car-safe fun) '(closure lambda))
|
||||
(error "Don't know how to compile %S" fun))
|
||||
(setq fun (byte-compile--reify-function fun))
|
||||
(setq lexical-binding (eq (car fun) 'closure)))
|
||||
(unless (eq (car-safe fun) 'lambda)
|
||||
(error "Don't know how to compile %S" fun))
|
||||
(setq fun (byte-compile--reify-function fun))
|
||||
(setq lexical-binding (eq (car fun) 'closure)))
|
||||
(unless (eq (car-safe fun) 'lambda)
|
||||
(error "Don't know how to compile %S" fun))
|
||||
;; Expand macros.
|
||||
(setq fun (byte-compile-preprocess fun))
|
||||
;; Get rid of the `function' quote added by the `lambda' macro.
|
||||
(if (eq (car-safe fun) 'function) (setq fun (cadr fun)))
|
||||
(setq fun (byte-compile-lambda fun))
|
||||
(if macro (push 'macro fun))
|
||||
(if (symbolp form)
|
||||
(fset form fun)
|
||||
fun)))))
|
||||
;; Expand macros.
|
||||
(setq fun (byte-compile-preprocess fun))
|
||||
;; Get rid of the `function' quote added by the `lambda' macro.
|
||||
(if (eq (car-safe fun) 'function) (setq fun (cadr fun)))
|
||||
(setq fun (byte-compile-lambda fun))
|
||||
(if macro (push 'macro fun))
|
||||
(if (symbolp form)
|
||||
(fset form fun)
|
||||
fun)))))))
|
||||
|
||||
(defun byte-compile-sexp (sexp)
|
||||
"Compile and return SEXP."
|
||||
|
Loading…
Reference in New Issue
Block a user