summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sb-eval2.lisp9
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)