changeset 81217:908a902d5545

(byte-compile-warnings): Add new option `make-local'. (byte-compile-warnings-safe-p): Add `make-local'. (byte-compile-make-variable-buffer-local): Allow byte-compile-warnings to suppress this warning.
author Glenn Morris <rgm@gnu.org>
date Thu, 07 Jun 2007 07:00:00 +0000
parents b2881c74343d
children fab9cb008a4e
files lisp/emacs-lisp/bytecomp.el
diffstat 1 files changed, 9 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/emacs-lisp/bytecomp.el	Thu Jun 07 06:59:46 2007 +0000
+++ b/lisp/emacs-lisp/bytecomp.el	Thu Jun 07 07:00:00 2007 +0000
@@ -101,6 +101,8 @@
 ;;				`cl-warnings' (calls to CL functions)
 ;;				`interactive-only' (calls to commands that are
 ;;						   not good to call from Lisp)
+;;				`make-local' (dubious calls to
+;;					      `make-variable-buffer-local')
 ;; byte-compile-compatibility	Whether the compiler should
 ;;				generate .elc files which can be loaded into
 ;;				generic emacs 18.
@@ -356,14 +358,16 @@
   cl-functions    calls to runtime functions from the CL package (as
 		  distinguished from macros and aliases).
   interactive-only
-	      commands that normally shouldn't be called from Lisp code."
+	      commands that normally shouldn't be called from Lisp code.
+  make-local  calls to make-variable-buffer-local that may be incorrect."
   :group 'bytecomp
   :type `(choice (const :tag "All" t)
 		 (set :menu-tag "Some"
 		      (const free-vars) (const unresolved)
 		      (const callargs) (const redefine)
 		      (const obsolete) (const noruntime)
-		      (const cl-functions) (const interactive-only))))
+		      (const cl-functions) (const interactive-only)
+		      (const make-local))))
 (put 'byte-compile-warnings 'safe-local-variable 'byte-compile-warnings-safe-p)
 ;;;###autoload
 (defun byte-compile-warnings-safe-p (x)
@@ -374,7 +378,7 @@
 		     (when (memq e '(free-vars unresolved
 				     callargs redefine
 				     obsolete noruntime
-				     cl-functions interactive-only))
+				     cl-functions interactive-only make-local))
 		       e))
 		   x)
 		  x))))
@@ -3888,7 +3892,8 @@
 ;; Warn about misuses of make-variable-buffer-local.
 (byte-defop-compiler-1 make-variable-buffer-local byte-compile-make-variable-buffer-local)
 (defun byte-compile-make-variable-buffer-local (form)
-  (if (eq (car-safe (car-safe (cdr-safe form))) 'quote)
+  (if (and (eq (car-safe (car-safe (cdr-safe form))) 'quote)
+           (memq 'make-local byte-compile-warnings))
       (byte-compile-warn
        "`make-variable-buffer-local' should be called at toplevel"))
   (byte-compile-normal-call form))