Mercurial > emacs
diff lisp/emacs-lisp/bytecomp.el @ 90201:fbb2bea03df9
Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-69
Merge from emacs--cvs-trunk--0
Patches applied:
* emacs--cvs-trunk--0 (patch 474-484)
- Update from CVS
- Merge from gnus--rel--5.10
* gnus--rel--5.10 (patch 88-91)
- Merge from emacs--cvs-trunk--0
- Update FSF's address in GPL notices
- Update from CVS
author | Miles Bader <miles@gnu.org> |
---|---|
date | Thu, 14 Jul 2005 08:02:00 +0000 |
parents | f9a65d7ebd29 09328bd431d2 |
children | 187d6a1f84f7 |
line wrap: on
line diff
--- a/lisp/emacs-lisp/bytecomp.el Thu Jul 07 12:43:14 2005 +0000 +++ b/lisp/emacs-lisp/bytecomp.el Thu Jul 14 08:02:00 2005 +0000 @@ -3353,11 +3353,14 @@ (defmacro byte-compile-maybe-guarded (condition &rest body) "Execute forms in BODY, potentially guarded by CONDITION. -CONDITION is the test in an `if' form or in a `cond' clause. -BODY is to compile the first arm of the if or the body of the -cond clause. If CONDITION is of the form `(foundp 'foo)' +CONDITION is a variable whose value is a test in an `if' or `cond'. +BODY is the code to compile first arm of the if or the body of the +cond clause. If CONDITION's value is of the form `(foundp 'foo)' or `(boundp 'foo)', the relevant warnings from BODY about foo -being undefined will be suppressed." +being undefined will be suppressed. + +If CONDITION's value is `(featurep 'xemacs)', that suppresses all +warnings during execution of BODY." (declare (indent 1) (debug t)) `(let* ((fbound (if (eq 'fboundp (car-safe ,condition)) @@ -3375,13 +3378,17 @@ (byte-compile-bound-variables (if bound (cons bound byte-compile-bound-variables) - byte-compile-bound-variables))) - (progn ,@body) - ;; Maybe remove the function symbol from the unresolved list. - (if fbound - (setq byte-compile-unresolved-functions - (delq (assq fbound byte-compile-unresolved-functions) - byte-compile-unresolved-functions))))) + byte-compile-bound-variables)) + (byte-compile-warnings + (if (equal ,condition '(featurep 'xemacs)) + nil byte-compile-warnings))) + (unwind-protect + (progn ,@body) + ;; Maybe remove the function symbol from the unresolved 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))) @@ -3422,12 +3429,12 @@ (if (null (cdr clause)) ;; First clause is a singleton. (byte-compile-goto-if t for-effect donetag) - (setq nexttag (byte-compile-make-tag)) - (byte-compile-goto 'byte-goto-if-nil nexttag) - (byte-compile-maybe-guarded (car clause) - (byte-compile-body (cdr clause) for-effect)) - (byte-compile-goto 'byte-goto donetag) - (byte-compile-out-tag nexttag))))) + (setq nexttag (byte-compile-make-tag)) + (byte-compile-goto 'byte-goto-if-nil nexttag) + (byte-compile-maybe-guarded (car clause) + (byte-compile-body (cdr clause) for-effect)) + (byte-compile-goto 'byte-goto donetag) + (byte-compile-out-tag nexttag))))) ;; Last clause (let ((guard (car clause))) (and (cdr clause) (not (eq guard t))