Mercurial > emacs
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) |