diff options
Diffstat (limited to 'sb-eval2.lisp')
-rw-r--r-- | sb-eval2.lisp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/sb-eval2.lisp b/sb-eval2.lisp index 853ba02..1e16620 100644 --- a/sb-eval2.lisp +++ b/sb-eval2.lisp @@ -148,8 +148,13 @@ (and parent (context-find-go-tag parent go-tag))))) (defun context-find-symbol-macro (context symmac) (let ((parent (context-parent context))) - (or (cdr (assoc (the symbol symmac) (context-symbol-macros context))) - (and parent (context-find-symbol-macro parent symmac))))) + (and (not (member symmac + (context-lexicals context) + :test #'equal + :key #'lexical-name)) + (not (member symmac (context-specials context) :test #'equal)) + (or (cdr (assoc (the symbol symmac) (context-symbol-macros context))) + (and parent (context-find-symbol-macro parent symmac)))))) (defun context-find-macro (context mac) (let ((parent (context-parent context))) (and (not (member `(function ,mac) |