nil))
-(declaim (ftype (sfunction (symbol &optional (or null lexenv))
+(declaim (ftype (sfunction ((or symbol cons) &optional (or null lexenv))
(values (member nil :function :macro :special-form)
boolean
list))
(declaim (ftype (sfunction
(symbol &optional (or null lexenv))
- (values (member nil :special :lexical :symbol-macro :constant :global)
+ (values (member nil :special :lexical :symbol-macro :constant :global :alien)
boolean
list))
variable-information))
:GLOBAL
NAME refers to a global variable. (SBCL specific extension.)
+ :ALIEN
+ NAME refers to an alien variable. (SBCL specific extension.)
+
The second value is true if NAME is bound locally. This is currently
always NIL for special variables, although arguably it should be T
when there is a lexically apparent binding for the special variable.
(let ((policy (sb-c::lexenv-policy env)))
(collect ((res))
(dolist (name sb-c::*policy-qualities*)
- (res (list name (cdr (assoc name policy)))))
+ (res (list name (sb-c::policy-quality policy name))))
(loop for (name . nil) in sb-c::*policy-dependent-qualities*
do (res (list name (sb-c::policy-quality policy name))))
(res))))