* lisp/emacs-lisp/cconv.el (cconv--analyze-use): Warn never-initialized vars

(byte-compile-not-lexical-var-p): Remove Emacs<24 compatibility.
This commit is contained in:
Stefan Monnier 2021-03-11 13:01:59 -05:00
parent 27b8638409
commit e13c30132a

View 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