Commit b5771c0d authored by Stefan Monnier's avatar Stefan Monnier
Browse files

* lisp/emacs-lisp/bytecomp.el (byte-compile): Don't signal an error if the

function is already compiled.
parent ee28be33
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."
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment