changeset 84746:246290585e1b

(byte-compile-warnings) (byte-compile-warnings-safe-p): Add `mapcar'. (byte-compile-normal-call): Add option to suppress mapcar warning. (top-level): Use mapc rather than mapcar in eval-when-compile.
author Glenn Morris <rgm@gnu.org>
date Fri, 21 Sep 2007 07:13:28 +0000
parents 0e4f63d9344d
children c793c2191087
files lisp/emacs-lisp/bytecomp.el
diffstat 1 files changed, 20 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/emacs-lisp/bytecomp.el	Fri Sep 21 07:13:18 2007 +0000
+++ b/lisp/emacs-lisp/bytecomp.el	Fri Sep 21 07:13:28 2007 +0000
@@ -103,6 +103,7 @@
 ;;						   not good to call from Lisp)
 ;;				`make-local' (dubious calls to
 ;;					      `make-variable-buffer-local')
+;;                              `mapcar'     (mapcar called for effect)
 ;; byte-compile-compatibility	Whether the compiler should
 ;;				generate .elc files which can be loaded into
 ;;				generic emacs 18.
@@ -359,7 +360,8 @@
 		  distinguished from macros and aliases).
   interactive-only
 	      commands that normally shouldn't be called from Lisp code.
-  make-local  calls to make-variable-buffer-local that may be incorrect."
+  make-local  calls to make-variable-buffer-local that may be incorrect.
+  mapcar      mapcar called for effect."
   :group 'bytecomp
   :type `(choice (const :tag "All" t)
 		 (set :menu-tag "Some"
@@ -367,7 +369,7 @@
 		      (const callargs) (const redefine)
 		      (const obsolete) (const noruntime)
 		      (const cl-functions) (const interactive-only)
-		      (const make-local))))
+		      (const make-local) (const mapcar))))
 (put 'byte-compile-warnings 'safe-local-variable 'byte-compile-warnings-safe-p)
 ;;;###autoload
 (defun byte-compile-warnings-safe-p (x)
@@ -378,7 +380,8 @@
 		     (when (memq e '(free-vars unresolved
 				     callargs redefine
 				     obsolete noruntime
-				     cl-functions interactive-only make-local))
+				     cl-functions interactive-only
+				     make-local mapcar))
 		       e))
 		   x)
 		  x))))
@@ -2831,7 +2834,8 @@
 (defun byte-compile-normal-call (form)
   (if byte-compile-generate-call-tree
       (byte-compile-annotate-call-tree form))
-  (when (and for-effect (eq (car form) 'mapcar))
+  (when (and for-effect (eq (car form) 'mapcar)
+	     (memq 'mapcar byte-compile-warnings))
     (byte-compile-set-symbol-position 'mapcar)
     (byte-compile-warn
      "`mapcar' called for effect; use `mapc' or `dolist' instead"))
@@ -4238,18 +4242,18 @@
       (assq 'byte-code (symbol-function 'byte-compile-form))
       (let ((byte-optimize nil)		; do it fast
 	    (byte-compile-warnings nil))
-	(mapcar (lambda (x)
-		  (or noninteractive (message "compiling %s..." x))
-		  (byte-compile x)
-		  (or noninteractive (message "compiling %s...done" x)))
-		'(byte-compile-normal-call
-		  byte-compile-form
-		  byte-compile-body
-		  ;; Inserted some more than necessary, to speed it up.
-		  byte-compile-top-level
-		  byte-compile-out-toplevel
-		  byte-compile-constant
-		  byte-compile-variable-ref))))
+	(mapc (lambda (x)
+		(or noninteractive (message "compiling %s..." x))
+		(byte-compile x)
+		(or noninteractive (message "compiling %s...done" x)))
+	      '(byte-compile-normal-call
+		byte-compile-form
+		byte-compile-body
+		;; Inserted some more than necessary, to speed it up.
+		byte-compile-top-level
+		byte-compile-out-toplevel
+		byte-compile-constant
+		byte-compile-variable-ref))))
   nil)
 
 (run-hooks 'bytecomp-load-hook)