X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Ffopcompile.lisp;h=b1cbefe216516b10d361294a5828ef422a16667e;hb=d25e3478acccec70402ff32554669a982be8e281;hp=4ea842f352d575e4a56ffeb517c2eb8d00681b07;hpb=f7e3e709f7c2207f1923375942f7fb1c092f92b0;p=sbcl.git diff --git a/src/compiler/fopcompile.lisp b/src/compiler/fopcompile.lisp index 4ea842f..b1cbefe 100644 --- a/src/compiler/fopcompile.lisp +++ b/src/compiler/fopcompile.lisp @@ -47,11 +47,7 @@ (fopcompilable-p macroexpansion) ;; Punt on :ALIEN variables (let ((kind (info :variable :kind form))) - (or (eq kind :special) - ;; Not really a global, but a variable for - ;; which no information exists. - (eq kind :global) - (eq kind :constant)))))) + (member kind '(:special :constant :global :unknown)))))) (and (listp form) (ignore-errors (list-length form)) (multiple-value-bind (macroexpansion macroexpanded-p) @@ -158,11 +154,10 @@ for value = (if (consp binding) (second binding) nil) - ;; Only allow binding lexicals, - ;; since special bindings can't be - ;; easily expressed with fops. + ;; Only allow binding locals, since special bindings can't + ;; be easily expressed with fops. always (and (eq (info :variable :kind name) - :global) + :unknown) (let ((*lexenv* (ecase operator (let orig-lexenv) (let* *lexenv*))))