diff options
author | Richard M. Stallman <rms@gnu.org> | 2006-02-21 19:54:36 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 2006-02-21 19:54:36 +0000 |
commit | fe541a2743944789a066e5bcdf461d88791a18f8 (patch) | |
tree | c67886125eca0d907ff0cc52a750520acf9675a1 /lisp/emacs-lisp/unsafep.el | |
parent | 7e5f578875b4b6cac1e893a5937a2cb70f55d03b (diff) | |
download | emacs-fe541a2743944789a066e5bcdf461d88791a18f8.tar.gz |
(unsafep): Don't treat &rest or &optional as variables at all.
(unsafep-variable): Rename arg; doc fix.
Diffstat (limited to 'lisp/emacs-lisp/unsafep.el')
-rw-r--r-- | lisp/emacs-lisp/unsafep.el | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/lisp/emacs-lisp/unsafep.el b/lisp/emacs-lisp/unsafep.el index 41e98694c71..aeaf653aef6 100644 --- a/lisp/emacs-lisp/unsafep.el +++ b/lisp/emacs-lisp/unsafep.el @@ -148,10 +148,10 @@ of symbols with local bindings." ((eq fun 'lambda) ;;First arg is temporary bindings (mapc #'(lambda (x) - (let ((y (unsafep-variable x t))) - (if y (throw 'unsafep y))) (or (memq x '(&optional &rest)) - (push x unsafep-vars))) + (let ((y (unsafep-variable x t))) + (if y (throw 'unsafep y)) + (push x unsafep-vars)))) (cadr form)) (unsafep-progn (cddr form))) ((eq fun 'let) @@ -247,17 +247,16 @@ and throws a reason to `unsafep' if unsafe. Returns SYM." (if reason (throw 'unsafep reason)) sym)) -(defun unsafep-variable (sym global-okay) - "Return nil if SYM is safe as a let-binding sym -\(because it already has a temporary binding or is a non-risky buffer-local -variable), otherwise a reason why it is unsafe. Failing to be locally bound -is okay if GLOBAL-OKAY is non-nil." +(defun unsafep-variable (sym to-bind) + "Return nil if SYM is safe to set or bind, or a reason why not. +If TO-BIND is nil, check whether SYM is safe to set. +If TO-BIND is t, check whether SYM is safe to bind." (cond ((not (symbolp sym)) `(variable ,sym)) ((risky-local-variable-p sym nil) `(risky-local-variable ,sym)) - ((not (or global-okay + ((not (or to-bind (memq sym unsafep-vars) (local-variable-p sym))) `(global-variable ,sym)))) |