* lisp/emacs-lisp/bytecomp.el (byte-compile-warning-types): New type
`lexical' for warnings related to lexical scoping. (byte-compile-file-form-defvar, byte-compile-defvar): Warn about global vars which don't have a prefix and could hence affect lexical scoping in unrelated files.
This commit is contained in:
parent
01e80360d0
commit
4f1e996048
2 changed files with 21 additions and 3 deletions
|
@ -265,7 +265,7 @@ If it is 'byte, then only byte-level optimizations will be logged."
|
|||
(defconst byte-compile-warning-types
|
||||
'(redefine callargs free-vars unresolved
|
||||
obsolete noruntime cl-functions interactive-only
|
||||
make-local mapcar constants suspicious)
|
||||
make-local mapcar constants suspicious lexical)
|
||||
"The list of warning types used when `byte-compile-warnings' is t.")
|
||||
(defcustom byte-compile-warnings t
|
||||
"List of warnings that the byte-compiler should issue (t for all).
|
||||
|
@ -2153,6 +2153,11 @@ list that represents a doc string reference.
|
|||
;; Since there is no doc string, we can compile this as a normal form,
|
||||
;; and not do a file-boundary.
|
||||
(byte-compile-keep-pending form)
|
||||
(when (and (symbolp (nth 1 form))
|
||||
(not (string-match "[-*:$]" (symbol-name (nth 1 form))))
|
||||
(byte-compile-warning-enabled-p 'lexical))
|
||||
(byte-compile-warn "Global/dynamic var `%s' lacks a prefix"
|
||||
(nth 1 form)))
|
||||
(push (nth 1 form) byte-compile-bound-variables)
|
||||
(if (eq (car form) 'defconst)
|
||||
(push (nth 1 form) byte-compile-const-variables))
|
||||
|
@ -3804,6 +3809,11 @@ that suppresses all warnings during execution of BODY."
|
|||
|
||||
(defun byte-compile-defvar (form)
|
||||
;; This is not used for file-level defvar/consts with doc strings.
|
||||
(when (and (symbolp (nth 1 form))
|
||||
(not (string-match "[-*:$]" (symbol-name (nth 1 form))))
|
||||
(byte-compile-warning-enabled-p 'lexical))
|
||||
(byte-compile-warn "Global/dynamic var `%s' lacks a prefix"
|
||||
(nth 1 form)))
|
||||
(let ((fun (nth 0 form))
|
||||
(var (nth 1 form))
|
||||
(value (nth 2 form))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue