Mercurial > emacs
changeset 74077:1080f62d73e3
(byte-compile-if): Revert last change.
author | Chong Yidong <cyd@stupidchicken.com> |
---|---|
date | Sun, 19 Nov 2006 15:19:39 +0000 |
parents | 2688edfa3810 |
children | 06428d92e703 |
files | lisp/emacs-lisp/bytecomp.el |
diffstat | 1 files changed, 24 insertions(+), 31 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/emacs-lisp/bytecomp.el Sun Nov 19 12:45:19 2006 +0000 +++ b/lisp/emacs-lisp/bytecomp.el Sun Nov 19 15:19:39 2006 +0000 @@ -3398,42 +3398,35 @@ If CONDITION's value is (not (featurep 'emacs)) or (featurep 'xemacs), that suppresses all warnings during execution of BODY." (declare (indent 1) (debug t)) - `(let* ((byte-compile-warnings - ;; Suppress all warnings, for code not used in Emacs. + `(let* ((fbound + (if (eq 'fboundp (car-safe ,condition)) + (and (eq 'quote (car-safe (nth 1 ,condition))) + ;; Ignore if the symbol is already on the + ;; unresolved list. + (not (assq (nth 1 (nth 1 ,condition)) ; the relevant symbol + byte-compile-unresolved-functions)) + (nth 1 (nth 1 ,condition))))) + (bound (if (or (eq 'boundp (car-safe ,condition)) + (eq 'default-boundp (car-safe ,condition))) + (and (eq 'quote (car-safe (nth 1 ,condition))) + (nth 1 (nth 1 ,condition))))) + ;; Maybe add to the bound list. + (byte-compile-bound-variables + (if bound + (cons bound byte-compile-bound-variables) + byte-compile-bound-variables)) + ;; Suppress all warnings, for code not used in Emacs. + (byte-compile-warnings (if (member ,condition '((featurep 'xemacs) (not (featurep 'emacs)))) - nil - byte-compile-warnings)) - (byte-compile-bound-variables byte-compile-bound-variables) - binding fbound-list) - (mapc (lambda (subcondition) - (cond ((eq 'fboundp (car-safe subcondition)) - (setq binding (and (eq 'quote (car-safe (nth 1 subcondition))) - ;; Ignore if the symbol is already on the - ;; unresolved list. - (not (assq (nth 1 (nth 1 subcondition)) - byte-compile-unresolved-functions)) - (nth 1 (nth 1 subcondition)))) - (if binding (setq fbound-list (cons binding fbound-list)))) - ((or (eq 'boundp (car-safe subcondition)) - (eq 'default-boundp (car-safe subcondition))) - (setq binding (and (eq 'quote (car-safe (nth 1 subcondition))) - (nth 1 (nth 1 subcondition)))) - (if binding (setq byte-compile-bound-variables - (cons binding byte-compile-bound-variables)))))) - ;; Inspect each element in an `and' condition; otherwise, - ;; inspect the condition itself. - (if (eq 'and (car-safe ,condition)) - (cdr ,condition) - (list ,condition))) + nil byte-compile-warnings))) (unwind-protect (progn ,@body) ;; Maybe remove the function symbol from the unresolved list. - (mapc (lambda (fun) - (setq byte-compile-unresolved-functions - (delq (assq fun byte-compile-unresolved-functions) - byte-compile-unresolved-functions))) - fbound-list)))) + (if fbound + (setq byte-compile-unresolved-functions + (delq (assq fbound byte-compile-unresolved-functions) + byte-compile-unresolved-functions)))))) (defun byte-compile-if (form) (byte-compile-form (car (cdr form)))