]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/emacs-lisp/cconv.el (cconv--analyze-use): Warn never-initialized vars
authorStefan Monnier <monnier@iro.umontreal.ca>
Thu, 11 Mar 2021 18:01:59 +0000 (13:01 -0500)
committerStefan Monnier <monnier@iro.umontreal.ca>
Thu, 11 Mar 2021 18:01:59 +0000 (13:01 -0500)
(byte-compile-not-lexical-var-p): Remove Emacs<24 compatibility.

lisp/emacs-lisp/cconv.el

index 68e930fa3f576ebd6333cd86c438a2c1fb4ec1ed..ca641a2ef0c712882e3502acb3bc0c5856b2893b 100644 (file)
@@ -585,9 +585,6 @@ places where they originally did not directly appear."
 
     (_ (or (cdr (assq form env)) form))))
 
-(unless (fboundp 'byte-compile-not-lexical-var-p)
-  ;; Only used to test the code in non-lexbind Emacs.
-  (defalias 'byte-compile-not-lexical-var-p 'boundp))
 (defvar byte-compile-lexical-variables)
 
 (defun cconv--analyze-use (vardata form varkind)
@@ -603,7 +600,13 @@ FORM is the parent form that binds this var."
      ;; FIXME: Convert this warning to use `macroexp--warn-wrap'
      ;; so as to give better position information.
      (byte-compile-warn
-      "%s `%S' not left unused" varkind var)))
+      "%s `%S' not left unused" varkind var))
+    ((and (let (or 'let* 'let) (car form))
+          `(,(or `(,var) `(,var nil)) t nil ,_ ,_))
+     ;; FIXME: Convert this warning to use `macroexp--warn-wrap'
+     ;; so as to give better position information.
+     (unless (not (intern-soft var))
+       (byte-compile-warn "Variable `%S' left uninitialized" var))))
   (pcase vardata
     (`(,binder nil ,_ ,_ nil)
      (push (cons (cons binder form) :unused) cconv-var-classification))
@@ -784,7 +787,7 @@ This function does not return anything but instead fills the
      (let ((dv (assq form env)))        ; dv = declared and visible
        (when dv
          (setf (nth 1 dv) t))))))
-(define-obsolete-function-alias 'cconv-analyse-form 'cconv-analyze-form "25.1")
+(define-obsolete-function-alias 'cconv-analyse-form #'cconv-analyze-form "25.1")
 
 (provide 'cconv)
 ;;; cconv.el ends here