X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=ecmalisp.lisp;h=867c2835ab3265fe1f3c89115c6cbbb4a0149d98;hb=90d70940965a3c6348ef5046dcee2455bdbcda10;hp=ac6f02b7d0b8c820ceeae986bd321097014f2e71;hpb=b0e60d593040ed49161ced44aa42fa4f170b9be0;p=jscl.git diff --git a/ecmalisp.lisp b/ecmalisp.lisp index ac6f02b..867c283 100644 --- a/ecmalisp.lisp +++ b/ecmalisp.lisp @@ -599,13 +599,18 @@ (defun find-symbol (name &optional (package *package*)) (let* ((package (find-package-or-fail package)) + (externals (%package-external-symbols package)) (symbols (%package-symbols package))) - (if (in name symbols) - (values (oget symbols name) t) - (dolist (used (package-use-list package) (values nil nil)) - (let ((exports (%package-external-symbols used))) - (when (in name exports) - (return (values (oget exports name) t)))))))) + (cond + ((in name externals) + (values (oget externals name) :external)) + ((in name symbols) + (values (oget symbols name) :internal)) + (t + (dolist (used (package-use-list package) (values nil nil)) + (let ((exports (%package-external-symbols used))) + (when (in name exports) + (return (values (oget exports name) :inherit))))))))) (defun intern (name &optional (package *package*)) (let ((package (find-package-or-fail package)))