changeset 64179:09328bd431d2

(byte-compile-maybe-guarded): Check for (featurep 'xemacs) and turn off warnings in what it guards. Use unwind-protect to ensure byte-compile-unresolved-functions is updated.
author Richard M. Stallman <rms@gnu.org>
date Fri, 08 Jul 2005 22:49:47 +0000
parents 0b1f11faf0b2
children 31e07400e56c
files lisp/emacs-lisp/bytecomp.el
diffstat 1 files changed, 24 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/emacs-lisp/bytecomp.el	Fri Jul 08 22:33:00 2005 +0000
+++ b/lisp/emacs-lisp/bytecomp.el	Fri Jul 08 22:49:47 2005 +0000
@@ -3351,11 +3351,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))
@@ -3373,13 +3376,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)))
@@ -3420,12 +3427,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))