Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
emacs
emacs
Commits
b5771c0d
Commit
b5771c0d
authored
Jul 04, 2012
by
Stefan Monnier
Browse files
* lisp/emacs-lisp/bytecomp.el (byte-compile): Don't signal an error if the
function is already compiled.
parent
ee28be33
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
28 additions
and
15 deletions
+28
-15
lisp/ChangeLog
lisp/ChangeLog
+3
-0
lisp/emacs-lisp/bytecomp.el
lisp/emacs-lisp/bytecomp.el
+25
-15
No files found.
lisp/ChangeLog
View file @
b5771c0d
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>
...
...
lisp/emacs-lisp/bytecomp.el
View file @
b5771c0d
...
...
@@ -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."
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment