comparison lisp/emacs-lisp/bytecomp.el @ 104586:2786934ea419

(byte-compile-eval): Fix test for cl in load-history for absolute file-names. (byte-compile-file-form-require): Warn about use of the cl package.
author Glenn Morris <rgm@gnu.org>
date Tue, 25 Aug 2009 07:28:16 +0000
parents 1261930ee0d2
children 169761687b63
comparison
equal deleted inserted replaced
104585:dc1af63f6b73 104586:2786934ea419
900 ;; Go through load-history, look for newly loaded files 900 ;; Go through load-history, look for newly loaded files
901 ;; and mark all the functions defined therein. 901 ;; and mark all the functions defined therein.
902 (while (and hist-new (not (eq hist-new hist-orig))) 902 (while (and hist-new (not (eq hist-new hist-orig)))
903 (let ((xs (pop hist-new))) 903 (let ((xs (pop hist-new)))
904 ;; Make sure the file was not already loaded before. 904 ;; Make sure the file was not already loaded before.
905 (when (and (equal (car xs) "cl") (not (assoc (car xs) hist-orig))) 905 (and (stringp (car xs))
906 (byte-compile-find-cl-functions))))))))) 906 (string-match "^cl\\>" (file-name-nondirectory (car xs)))
907 (not (assoc (car xs) hist-orig))
908 (byte-compile-find-cl-functions)))))))))
907 909
908 (defun byte-compile-eval-before-compile (form) 910 (defun byte-compile-eval-before-compile (form)
909 "Evaluate FORM for `eval-and-compile'." 911 "Evaluate FORM for `eval-and-compile'."
910 (let ((hist-nil-orig current-load-list)) 912 (let ((hist-nil-orig current-load-list))
911 (prog1 (eval form) 913 (prog1 (eval form)
2320 (put 'require 'byte-hunk-handler 'byte-compile-file-form-require) 2322 (put 'require 'byte-hunk-handler 'byte-compile-file-form-require)
2321 (defun byte-compile-file-form-require (form) 2323 (defun byte-compile-file-form-require (form)
2322 (let ((args (mapcar 'eval (cdr form)))) 2324 (let ((args (mapcar 'eval (cdr form))))
2323 (apply 'require args) 2325 (apply 'require args)
2324 ;; Detect (require 'cl) in a way that works even if cl is already loaded. 2326 ;; Detect (require 'cl) in a way that works even if cl is already loaded.
2325 (if (member (car args) '("cl" cl)) 2327 (when (member (car args) '("cl" cl))
2326 (byte-compile-disable-warning 'cl-functions))) 2328 (if (byte-compile-warning-enabled-p 'cl-functions)
2329 (byte-compile-warn "cl package required at runtime"))
2330 (byte-compile-disable-warning 'cl-functions)))
2327 (byte-compile-keep-pending form 'byte-compile-normal-call)) 2331 (byte-compile-keep-pending form 'byte-compile-normal-call))
2328 2332
2329 (put 'progn 'byte-hunk-handler 'byte-compile-file-form-progn) 2333 (put 'progn 'byte-hunk-handler 'byte-compile-file-form-progn)
2330 (put 'prog1 'byte-hunk-handler 'byte-compile-file-form-progn) 2334 (put 'prog1 'byte-hunk-handler 'byte-compile-file-form-progn)
2331 (put 'prog2 'byte-hunk-handler 'byte-compile-file-form-progn) 2335 (put 'prog2 'byte-hunk-handler 'byte-compile-file-form-progn)